zshrc

注意

この記事はobsoleteです。あたらしいzshrcが僕がMacBookで必ず使う43のソフトウェア達にありますのでそちらをご参照ください。

 

一回じゃ入らんからエントリ分けるよ・・・

 

.zshrc

 


#


# kcrt’s .zshrc file for Fedora/Debian


# Written by kcrt <kcrt__atmark__kcrt.net>


# Nanoseconds Hunter “http://www.kcrt.net


# Id: $Id$


#


# —– とりあえず

stty

stop

 undef

# ^Sとかを無効にする。


# —– 色宣言


typeset

 -A hostcolors

typeset

 -A hostblacks
hostcolors

=(

kuro green fro cyan sphe yellow pele magenda

)

hostblacks

=(

kuro

001100

 fro

001111

 sphe

001111

 pele

110000)

hostcolor

=

blue

if[[$hostcolors[$HOST]=“”]];then

hostcolor

=

blue
hostblack

=“000000”


else

hostcolor

=$hostcolors[$HOST]

hostblack

=$hostblacks[$HOST]


fi


export

 hostcolor

export

 hostblacks

# —– xterm(screen上以外での起動)だと思われる


if[[$TERM==“xterm”]];then


# 色の個別設定 – うまく動かない端末もあります


echo-n“^[]R”# first, reset the palette


echo-n“^[]P0$hostblack# black


echo-n“^[]P1FF0000″# red


echo-n“^[]P200CC00″# green


echo-n“^[]P3CCCC00″# yellow


echo-n“^[]P45555FF”# blue


echo-n“^[]P5FF00FF”# magenta


echo-n“^[]P600FFFF”# cyan


echo-n“^[]P7CCCCCC”# white


echo-n“^[]P8888888″# BLACK


echo-n“^[]P9FFAAAA”# RED


echo-n“^[]PA88FF88″# GREEN


echo-n“^[]PBFFFFAA”# YELLOW


echo-n“^[]PC7777FF”# BLUE


echo-n“^[]PDFFCCFF”# MAGENTA


echo-n“^[]PE88FFFF”# CYAN


echo-n“^[]PFEEEEEE”# WHITE


# タイトルバーの文字列


if[[$SSH_CONNECTION!=“”]];then


# ssh接続

tmpTitle

=`echo -n $SSH_CONNECTION | sed -e ‘s/¥(.*¥) .* ¥(.*¥) .*/¥1 –> ¥2/g’`


echo“^[]2;$HOST($tmpTitle, ssh)¥a


elif[[$REMOTEHOST!=“”]];then


# おそらくtelnet


echo-n“^[]2;$REMOTEHOST –> $HOST¥a;


else


# ローカルと見た


echo-n“^[]2;$HOST(local)¥a


fi


fi


# —– 環境変数


export

 EDITOR

=“vim”# やっぱりvimだねっ


export

 COLOR

=“tty”


# —– 色関係


autoload

 colors

# $color[red]とかが使えるようになる。

colors

eval`dircolors -b`

zstyle

‘:completion:*’

 list-colors

${(s.:.)LS_COLORS}# 補完も色つける


# —– autoloadたち


autoload

 -U compinit
compinit

-u


autoload

 zmv

autoload

 zargs

autoload

 zsh/files

# 設定はNOを頭につけると逆の意味になるよ!


# —– 補完


LISTMAX=200# 表示する最大補完リスト数


setopt

 auto_list

# 曖昧な補完で自動的にリスト表示


setopt

 NO_menu_complete

# 一回目の補完で候補を挿入(cf. auto_menu)


setopt

 auto_menu

# 二回目の補完で候補を挿入


setopt

 magic_equal_subst

# (?) –include=/usr.. などの=補完を有効に


setopt

 NO_complete_in_word

#

TODO

:よくわからない


setopt

 list_packed

# 補完候補をできるだけつめて表示する


setopt

 NO_list_beep

# 補完候補表示時にビープ音を鳴らす


setopt

 list_types

# ファイル名のおしりに識別マークをつける


# —– 履歴


HISTFILE=$HOME/.zhistory”# 履歴保存先


HISTSIZE=1000# 使用する履歴数


SAVEHIST=1000# 保存する履歴数


setopt

 hist_ignore_space

# スペースで始まるコマンドを記録しない


setopt

 hist_ignore_all_dups

# 重複した履歴を記録しない


setopt

 share_history

# ターミナル間の履歴を共有する


setopt

 append_history

# 履歴を追記する


# —– ファイル操作関連


setopt

 auto_cd

# ディレクトリ名でcd


setopt

 auto_remove_slash

# 不要なスラッシュをはずす


setopt

 auto_pushd

# 自動的にpushd


setopt

 pushd_ignore_dups

# 重複したディレクトリスタックを記録しない


setopt

 correct

# コマンドのスペル補正


setopt

 correct_all

# コマンド以外もスペル補正


setopt

 equals

# =zshとかが置換される


setopt

 extended_glob

# 拡張グロブ有効


# —– そのほかの設定


setopt

 print_eight_bit

# 8ビット文字表示


setopt

 prompt_subst

# プロンプトでのコマンド置換などを有効に


setopt

 beep

# エラー時にはBeep音


setopt

 NO_emacs

# viが一番!


setopt

 NO_flow_control

# ^S/^Qを有効に


# —– プロンプト


# PROMPT=’%{^[[%(!.31.32)m%}[%n@%m]%# %{^[[m%}’


PROMPT=‘%{%(!.$fg[red].$fg[$hostcolor])%}[%n@%m]%# %{$reset_color%}’


# 最後に実行したプログラムがエラーだと反転するよ。


RPROMPT=‘ %{%(?.$fg[cyan].$bg[cyan]$fg[black])%} [%~] %{$reset_color%}’


# —– キー


bindkey

 -v

bindkey‘^z’

    push-line

bindkey‘^y’

    run-help

bindkey‘^[[A’

   up-line-or-history

bindkey‘^[[B’

   down-line-or-history

# —– 自分用関数

ShowStatus()

{


# モードの切り替え時に右上にモードを表示


integer

 Cursor_X

integer

 Cursor_Y

integer

 StrLength
StrLength

=

$

(echo-n$1|

 wc -m

)

Cursor_X

=

$

[COLUMNS

-

$StrLength]# 場所はお好みで

Cursor_Y

=1


echo-n“^[[s”# push pos


echo-n“^[[$[$Cursor_Y];$[$Cursor_X]H”# set pos


echo-n“^[[07;37m$1^[[m”# print


echo-n“^[[u”# pop pos


}


# viins <-> vicmd {{{

Vi_ToCmd()

{

ShowStatus

“– NORMAL –“


builtin

 zle .vi-cmd-mode

}

Vi_Insert()

{

ShowStatus

“– INSERT –“


builtin

 zle .vi-insert

}

Vi_InsertFirst()

{

ShowStatus

“– INSERT –“


builtin

 zle .vi-insert-bol

}

Vi_AddNext()

{

ShowStatus

“– INSERT –“


builtin

 zle .vi-add-next

}

Vi_AddEol()

{

ShowStatus

“– INSERT –“


builtin

 zle .vi-add-eol

}

Vi_Change()

{

ShowStatus

“– INSERT –“


builtin

 zle .vi-change

}

zle -N Vi_ToCmd
zle -N Vi_Insert
zle -N Vi_InsertFirst
zle -N Vi_AddNext
zle -N Vi_AddEol
zle -N Vi_Change

bindkey

 -M viins

“^[“

 Vi_ToCmd

bindkey

 -M vicmd

“i”

 Vi_Insert

bindkey

 -M vicmd

“I”

 Vi_InsertFirst

bindkey

 -M vicmd

“a”

 Vi_AddNext

bindkey

 -M vicmd

“A”

 Vi_AddEol

bindkey

 -M vicmd

“c”

 Vi_Change

bindkey

 -M vicmd

“/”

 history-incremental-search-backward

bindkey

 -M vicmd

“^P”

 vi-repeat-search

bindkey

 -M vicmd

“^N”

 vi-rev-repeat-search

# vi-repeat-search


bindkey“^Q”

 self-insert

# }}}


# —– 関数


function

 _w3m()

{

:title w3m

$1


if[[$1==“”]];then

w3m http://www.google.co.jp

else

w3m

$@


fi

:title

$SHELL


}


function

 :whatsnew()

{

vimdiff

$1=(

svn cat --revision HEAD

$1)


}

fucntion :whatchanged()

{

vimdiff

$1=(

svn cat --revision PREV

$1)


}


function

 trash()

{


if[$#=0];then


command

 rm

return1


fi


if[

 !

-d

 ~/.trash

];then


echo“ERROR : ~/.trash not found!”


return1


fi

mv

$@

 ~/.trash

||return


if[$#=1];then


echo‘$1’ was moved into trash!”


else


echo$# files were moved into trash!”


fi


}


# —– エイリアス


# コマンド置き換え


alias

 vi

=‘vim -p’


alias

 rm

=‘trash’


alias

 w3m

=‘_w3m’


# 引数


alias

 ls

=‘ls -F –color=tty’


alias

 du

=‘du –human-readable -s ./*’


alias

 df

=‘df –human-readable’


alias

 grep

=‘grep –color -a’


alias

 less

=‘less –ignore-case –status-column –prompt=”?f%f:(stdin).?m(%i/%m files?x, next %x.). ?c<-
%c-> .?e(END):%lt-%lb./%Llines” –hilite-unread –tabs=4 –window=-5’


alias

 pstree

=‘pstree -p’


alias

 cal

=‘cal -3’


alias

 zmv

=‘noglob zmv -W’


alias

 zcp

=‘noglob zmv -C’


alias

 zln

=‘noglob zmv -L’


# 省略とか


alias

 la

=‘ls -F -a –color=tty’


alias

 ll

=‘ls -F -la –color=tty –sort=time –reverse’


alias

 hist

=‘history’


alias

 :q

=‘exit’


alias

 su

=‘su -s =zsh’


alias

 hexdump

=‘od -Ax -tx1z -v’


alias

 beep

=‘print “¥a”‘


alias

 cls

=‘clear’


alias

 ...

=‘cd ../..’


alias

 ....

=‘cd ../../..’


alias

 .....

=‘cd ../../../..’


alias

 :kuro

=‘ssh kuro’


if[[-x

 /usr/bin/man

]];then

compdef _man w3mman

alias

 man

=‘w3mman’


fi


# —– suffix alias (関連づけ)


alias-s

 txt

=‘cat’


alias-s

 log

=‘tail -f -n20’


alias-s

 html

=‘w3m’


function

 viewxls()

{

w3m -T text/html

=(

xlhtml

$1)


}


alias-s

 xls

=‘viewxls’


# —– root用の設定


if[[$USER!=‘root’]];then


alias

 updatedb

=“sudo updatedb; beep”


alias

 taillog

=‘sudo tail -f -n20 /var/log/syslog’


# Fedoraはデフォルトで設定されてない

zstyle

‘:completion:*:sudo:*’command

-

path

 /usr/sbin /usr/bin /sbin /bin /usr/

local

/sbin

exportPATH=$PATH

:/usr/sbin:/sbin:/usr/

local

/sbin

fi


# —– Abstraction (予定)


alias

 :

suspend=“sudo /usr/sbin/pm-suspend”


alias

 :hibernate

=“sudo /usr/sbin/pm-hibernate”


if[[-x

 /usr/bin/yum

]];then


alias

 :package_update

=“sudo yum update”


alias

 :package_install

=“sudo yum install”


elif[[-x

 /usr/bin/aptitude

]];then


alias

 :package_update

=“sudo aptitude update; sudo aptitude upgrade”


alias

 :package_install

=“sudo aptitude install”


alias

 :package_list

=“”


alias

 :package_search

=“sudo aptitude show”


fi


# —– cygwin 固有設定


if[[$OSTYPE=

 *cygwin*

]];then


alias

 updatedb

=“updatedb –prunepaths=‘/cygdrive’


alias

 open

=‘cmd /c start ‘


alias

 start

=‘explorer . &’


fi


# —– screen 使うことにしたよ


if[[-x

 /usr/bin/screen

]];then


function

 :title()

{


# 1 : 普通の起動


# 2 : screen上 -> TERM = “screen”


# 3 : ssh または screen上でのssh -> SSH_CLIENTが空でない


# 4 : ssh上でのscreen -> SSH_CLIENTが空でない かつ STYが空でない


# rootの場合**を付ける


if[[$USER==“root”]];then


1=“*$1*”


fi


if[[-n$SSH_CLIENT]];then


if[[-n$STY]];then


# 4 : ssh上でのscreen


else


# 3 : ssh または screen上でのssh


# マシン名を付け加える


1=$HOST:$1


fi


elif[[$TERM==“screen”]];then


# 2 : screen上 -> TERM = “screen”


else


# 1 : 普通の起動


fi


echo-n“^[k$1^[¥¥


}


alias

 :split

=‘screen -X split’


alias

 :taillog

=‘screen -t syslog sudo tail -f /var/log/syslog’


alias

 :tailapachelog

=‘screen -t syslog sudo tail -f /var/log/apache2/error.log’


alias

 :top

=‘screen -t top top’


alias

 :displays

=‘screen -X displays’


# よく使いそうなやつ

IsScreen

=`expr $TERM : screen`


if[[$IsScreen!=0]];then


# —– スクリーンだよ!

preexec()

{


# derived from http://nijino.homelinux.net/diary/200206.shtml#200206140


# and modified by kcrt

emulate

-L

 zsh

local-a

 cmd

;

cmd

=(${(z)2})


case$cmd[1]in


fg)


if(($#

cmd

==1));then

cmd

=(`builtin jobs -l %+`)


else

cmd

=(`builtin jobs -l $cmd[2]`)


fi


;;

%*

)

cmd

=(`builtin jobs -l $cmd[1]`)


;;

ls

)


local-a

 wd

;

wd

=(`builtin dirs`);

:title

$wd[0];


;;


cd)

:title

$cmd[2];


;;

sudo

)

:title

“*$cmd[2]*”;


;;

*

)

:title

$cmd[1];


;;


esac


#local -A jt; jt=(${(kv)jobtexts})


#$cmd >>(read num rest


#cmd=(${(z)${(e):-¥$jt$num}})


#echo -n “^[k$cmd[1]:t^[¥¥”) 2>/dev/null


}


else

screen

-r


fi


else


echo[kcrt] : screen not found.”


fi


 

コメントを残す