理系学生日記

おまえはいつまで学生気分なのか

cpanm でモジュール名を補完する

インストールしたいモジュール名を cpanm の引数として一言一句タイプするのは面倒なので、zsh 上で、02packages.details.txt に記述されているモジュール名で補完させるようにしました。

.zshrc に以下を書き込めば良いかと思いますが、注意点としては、ブランクのままで補完させようとすると、しばらく CPU 使用率が 100% になり zsh が固まるという恐しい副作用があることです。

function _cpanm {
    local packages=$(find $HOME/.cpanm -name 02packages.details.txt | head -1)
    local linenum=$(wc -l $packages | awk '{ print $1 }')

    # skip a header section
    compadd $(tail -$(($linenum - 9)) $packages | awk '{ print $1 }')
}
compdef _cpanm cpanm

ターミナル — screen — zsh — 180×54