7
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

zsh から bash 用の補完スクリプトをつかって nvm の補完候補を出す

Posted at

要約

nvm には bash 用の補完スクリプトしか用意されていないが zsh に 「bash 用の補完スクリプトを解釈するステキ機能」 が備わっているため、それを利用して zsh で nvm の補完候補を出すことができる。

.zshrc

.zshrc
[[ -r $NVM_DIR/bash_completion ]] && . $NVM_DIR/bash_completion

と書いておけば zsh でも nvm の補完候補が出るようになる。

詳細

zsh から Node の version manager である nvm を使うときに補完候補を出せないかなと思って調べていたら bash 用の補完スクリプト が用意されていることがわかった。

zsh 用に移植しようかと思ってソースコードを読んでいると

bash_completion
# complete is a bash builtin, but recent versions of ZSH come with a function
# called bashcompinit that will create a complete in ZSH. If the user is in
# ZSH, load and run bashcompinit before calling the complete function.
if [[ -n ${ZSH_VERSION-} ]]; then
	autoload -U +X bashcompinit && bashcompinit
fi

という記述を発見。なんでも最近(数年前から)の zsh には bash 用の補完スクリプトを解釈する機能が備わっているらしい。

その機能を有効にするためには autoload -U +X bashcompinit && bashcompinit とすればよいらしく nvm の bash 用補完スクリプト bash_completion は、上で抜粋した部分で勝手にコレを呼んでくれている。

というわけで我々は bash と同じく .zshrc

.zshrc
[[ -r $NVM_DIR/bash_completion ]] && . $NVM_DIR/bash_completion

とすればよい。素晴らしい。

nvm alias default と打って TAB を打ち込んだ時にバージョン一覧が表示されなかったりと、かゆいところに手が届かない感じもあるけれど、ないよりははるかにマシ。

7
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?