強烈に便利なzshrcの設定 3種盛り

 タイトルはやや釣りぎみのような気もするが、この設定がないサーバで長時間作業したくない、と思う程度には便利なので、個人的には釣りではないと言える。

ctrl + 矢印で単語単位のカーソル移動

 コマンドの真ん中あたりに間違いがあった場合、修正するためにカーソルを移動させるのはちょっとした苦痛である。デフォルトのキーバインドだと、emacsバインディングであればalt + bとかalt + nで単語単位で移動できるのだが、これは片手で打つと親指に無理がかかるキーバインドである。そこで、emacsと同じように、ctrl + ←→ で単語単位の移動を可能にしておく。ついでに、/は単語の一部と見做さない様に設定しておく。この設定により、長いパス名の中程に間違いがあった場合に修正するのが楽になる。

bindkey ";5C" forward-word
bindkey ";5D" backward-word

export WORDCHARS='*?[]~=&;!#$%^(){}<>'

 別のサーバーにsshで入って作業していると、この設定が使える時と使えない時があって不便なので、そのうち詳しく調べたいと思っているのだが、まだ手をつけられていない。しばらくは調べられそうもない。

--prefix=の後のパス名を補完したり

 開発をしていると./configure --prefix=/opt/hoge/fuga みたいなコマンドを打つ機会はよくあるが、=の後はデフォルトではパス名を補完してくれない。これは非常に面倒くさいので、補完してほしい。そこで、magic_equal_substを使うと良い具合に補完してくれるようになる。

setopt magic_equal_subst

makeとかの出力に色付け

 ビルドに失敗したときに、出力されたメッセージからどこがエラーだったのかを探すのは結構苦痛である。特にC++のテンプレートまわりでエラーが出たときなんかはエラーメッセージが非常に長くなるので辛い。そこで、エラーメッセージ本文に色付けを行う。

e_normal=`echo -e "\033[0;30m"`
e_RED=`echo -e "\033[1;31m"`
e_BLUE=`echo -e "\033[1;36m"`

function make() {
    LANG=C command make "$@" 2>&1 | sed -e "s@[Ee]rror:.*@$e_RED&$e_normal@g" -e "s@cannot\sfind.*@$e_RED&$e_normal@g" -e "s@[Ww]arning:.*@$e_BLUE&$e_normal@g"
}
function cwaf() {
    LANG=C command ./waf "$@" 2>&1 | sed -e "s@[Ee]rror:.*@$e_RED&$e_normal@g" -e "s@cannot\sfind.*@$e_RED&$e_normal@g" -e "s@[Ww]arning:.*@$e_BLUE&$e_normal@g"
}

 最近はwafも使うので、cwafというfunctionも定義してみた。cwafはwafの出力に色付けを行う。

おまけ

autoload -Uz url-quote-magic
zle -N self-insert url-quote-magic

setopt autopushd

 url-quote-magicは、URLをコピペしたときに自動でエスケープしてくれる。ちょっとwgetでファイルを落としたい時とかに便利。
 autopushdは有名なので特筆すべきことはないが、勝手にpushdしておいてくれるので、さっきのディレクトリに戻りたい、というときにcd /hoge/fuga みたいなのを打たなくてもpopdだけでいけるようになる。
 それでは、快適なzshライフをお楽しみください。

参考リンク