zsh で rpm のタブ補完

zsh はコマンドの引数に応じて補完対象をかえてくれるのはとても便利です。私的に実用性が謎だったのが、 scp user@host: の後のタブ補完と、 rpm -qi の後のタブ補完でした。両方とも補完速度が尋常じゃなく遅いわけです。

で、後者は rpm -qa が遅いのだろう、ということで簡単にキャッシュしてみることにしました。

rpm -qa > /data/rpmqa

などとしてキャッシュを作り、

#!/bin/sh

if [ "x$@" = "x-qa" ]; then
    exec cat /data/rpmqa
else
    exec /bin/rpm $@
fi

という内容のコマンド(引数が -qa ならキャッシュを投げて、そうじゃなければ普通に rpm を実行)を ~/bin の下に rpm という名前で置いてみたところ、補完がとても快適になりました。

なにかあれば下記メールアドレスへ。
shinichiro.hamaji _at_ gmail.com
shinichiro.h