Wednesday, February 21, 2007

2週間ほどピークだけどちょっとzshを

macbookで利用しているシェルをこの前zshにしました。たまにちょこちょこ替えていたのですが、今回は本格的です。設定ファイルもいろいろ参考にして書きました。一部を公開します。


find-grep () { find . -type f -print | xargs grep -n --binary-files=without-match $@ }
chpwd() { ls -ltrGv } # cd をしたときにlsを実行する

##
## option section
##
setopt NO_beep # ビープ音を鳴らさないようにする
setopt NO_flow_control # C-s, C-qを無効にする。
setopt NO_list_types # auto_list の補完候補一覧で、ls -F のようにファイルの種別をマーク表示しない
setopt PROMPT_SUBST
setopt append_history # 複数の zsh を同時に使う時など history ファイルに上書きせず追加
setopt auto_cd # ディレクトリ名だけで、ディレクトリの移動をする。
setopt auto_list # 補完候補が複数ある時に、一覧表示
setopt auto_menu # 補完キー(Tab, Ctrl+I) を連打するだけで順に補完候補を自動で補完
setopt auto_param_keys # カッコの対応などを自動的に補完
setopt auto_param_slash # ディレクトリ名の補完で末尾の / を自動的に付加し、次の補完に備える
setopt auto_pushd # cdのタイミングで自動的にpushd
#setopt correct # リターンを押す度にスペルチェックをする。
#setopt correct_all
setopt extended_glob # globを拡張する。
setopt extended_history # 履歴ファイルに時刻を記録
setopt hist_expand # 補完時にヒストリを自動的に展開する。
setopt hist_ignore_all_dups # 重複したヒストリは追加しないsetopt hist_ignore_dups # 直前と同じコマンドラインはヒストリに追加しない
setopt hist_verify # ヒストリを呼び出してから実行する間に一旦編集できる状態になるsetopt magic_equal_subst # コマンドラインの引数で --prefix=/usr などの = 以降でも補完できる
setopt mark_dirs # ファイル名の展開でディレクトリにマッチした場合末尾に / を付加する
setopt print_eight_bit # 8 ビット目を通すようになり、日本語のファイル名を表示可能
setopt pushd_to_home # pushd を引数無しで実行した時に pushd ~ とする。
#setopt rmstar_wait # rm * を実行する前に確認される。
setopt share_history # シェルのプロセスごとに履歴を共有

##
## environment section
##
HISTFILE=~/.histfile # ヒストリの設定
HISTSIZE=10000
SAVEHIST=10000
LISTMAX=0 # 補完するかの質問は画面を超える時にのみに行う。
WORDCHARS='*?_-.[]~=&;!#$%^(){}<>' # Ctrl+wで、直前の/までを削除する。

##
## zstyle section
##
zstyle ':completion:*:sudo:*' command-path /usr/local/sbin /usr/local/bin /usr/sbin /usr/bin /sbin /bin # sudo でも補完の対象
zstyle ':completion:*' list-colors ${(s.:.)LS_COLORS} # ファイルリスト補完でもlsと同様に色をつける。


zshはやたら専門用語が多いらしいのであまり説明できません。でもなかなか面白いです。