zshでport(MacPorts)の補完をする
zshは強力な補完機能が売りの1つですが、MacPortsのportコマンドには対応していません。variantsで、
$ sudo port install zsh +mp_completion
とすればMacPorts用の補完用スクリプトが入るのですが、キャッシュされていなくて遅かったり、variantsに対応していなかったりと若干不満が残るものでした。
なので、その辺に対応させたものを書いたので上げてみます。(動作保証はしません)
ダウンロード
http://www7b.biglobe.ne.jp/~hagure_beans/files/_macports
https://github.com/beans15/my_settings/blob/master/.zsh/functions/_macports
基本的にどちらも同じです。上のURLは、もしかしたらそのうち消えるかもしれません。あと、最新でないかもしれません。
設定
ホームディレクトリに .zsh/ ディレクトリを作り、さらにその中に、cache/ ディレクトリと functions/ ディレクトリを作ります。
$ mkdir ~/.zsh $ mkdir ~/.zsh/cache $ mkdir ~/.zsh/functions
そして、.zsh/functions/ ディレクトリの中に、ダウンロードした _macports ファイルを置きます。
$ cp ~/Downloads/_macports ~/.zsh/functions/
最後に、.zshrc の、compinitの前に以下の設定を加えます。
# ローカルの補完ディレクトリを追加 fpath=(~/.zsh/functions ${fpath}) # キャッシュの設定 if [ -d ~/.zsh/cache ]; then zstyle ':completion:*' use-cache yes zstyle ':completion:*' cache-path ~/.zsh/cache fi
使い方
書くほどのことではない気もしますが、とりあえず書いときます。
$ port install
と書いてタブを打つと、インストール可能なportsが表示されます。最初はキャッシュされていないので遅いですが、2回目以降はまともな速度で表示されるはずです。
また、variantsは、
$ port install zsh +
と書いてタブを打つと、利用できるvariantsが表示されます。