ふと思い立って zsh を触ってみることにしました。 Oh-my-zsh はなんとなく大きすぎて嫌だったのですが、次の記事を見て grml-zsh-config を導入しました。
知ったらもう戻れない!? 便利すぎるZshの世界 - Mimir Yokohama
rye をHomebrewではなく本家からダウンロードしてインストールしているのですが、zshの補完の設定方法として次のように書かれています。
# Make sure ~/.zfunc is added to fpath, before compinit. rye self completion -s zsh > ~/.zfunc/_rye
試しに fpath=( "$HOME/.zfunc" ${fpath} )
を ~/.zshrc.local に追加してみたのですが、補完が有効になりません。「before compinit」になっていないようです。
grml-zsh-config では ~/.zshrc を編集することが推奨されていないようなのでどうしたものかと眺めていたのですが、 ~/.zshrc の先頭付近に次のような記述を見つけました。
# USAGE # If you are using this file as your ~/.zshrc file, please use ~/.zshrc.pre # and ~/.zshrc.local for your own customisations. The former file is read # before ~/.zshrc, the latter is read after it.
ということで、次のようにしたら無事にryeのコマンド補完が動くようになりました。
% echo 'fpath=( "$HOME/.zfunc" ${fpath} )' > ~/.zshrc.pre
Homebrewを使っているときは、ついでに Homebrew の zsh 補完関数置き場も fpath に追加しておきましょう。
# ~/.zshrc.pre fpath=( "$HOME/.zfunc" /opt/homebrew/share/zsh/site-functions ${fpath} ) # zsh-completions も有効にする場合は $(brew --prefix)/share/zsh-completions もfpathに追加する。