A Day in the Life

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

記事の一覧 >