zshでgem installの補完
最近俺の中でRoR*1が熱い!っていうんで必然的にgemを使う機会が増えるわけで。んでgem install packageでパッケージをインストールするんだけどいちいち手で入力するのは面倒。apt-get install [tab]みたいな感で補完とかしたい!つんで、昔ながらのcompctlを使った方法で補完してみる。
ailas gem-update='gem update;gem list -r 2> /dev/null|egrep '\''^[a-zA-Z]'\'' |awk '\''{print }'\'' > ~/tmp/gem_list' compctl -k '(help install uninstall check build query list search update rDoc environment specification unpack)' \ -x 'c[-1,-t]' - 'C[-1,(install)]' \ -K _gem -- gem functions _gem () { reply=(`cat ~/tmp/gem_list`) }
gem-updateで~/tmp/gem_listを更新して、gem install [tab]するとそいつ読んで補完候補として表示する。
$ gem install ru[tab] rublog ruby-doom rubyslippers ruby-activeldap ruby-growl rubyzip ruby-activeldap-debug ruby-json runt ruby-breakpoint ruby-managesieve ruvi ruby-cache rubygems-update ruwiki ruby-contract rubypants
こんな感じに。つーかcompctl用いた旧世代の方法じゃカッコワルイのでだれか新世代のスマートな方法でやってください!
*1:Rise of RomeじゃなくってRuby on Railsの方