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の方