yaotti's diary

Software is Eating the World

zshのbackword-kill-wordの挙動をEmacs風に変える

例えばEmacsでファイルを開く時,
~/hoge/fuga/piyo.txt
とあるとき,C-backspaceを押せば(M-x backword-kill-wordと同じ)
~/hoge/fuga/
とできる.ディレクトリを遡ってファイルを開く時にC-hを連打せずに済むので便利.

zshではこのbackword-kill-wordはC-wに割り当てられているが,/ではなく空白まで削除してしまうため
例えば
$ cp hoge ~/fuga/piyo
でC-wを押すと
$ cp hoge ~/fuga
としてほしいのに
$ cp hoge
になる.
そこで/を単語の境界と認識させるため,.zshrcに以下を書く

WORDCHARS="*?_-.[]~=&!#$%^(){}<>"

これで/は「単語に含まれない記号」となるので,C-wを押せば/までを消してくれる.
WORDCHARSから-を取れば-も同様に扱われるようになる.その方がEmacsぽいかも.