anyenv (rbenv) で入れたrubyをvim-quickrunで実行させる

#zsh #vim

前回、anyenvの設定を正しい位置に書いたらVimの起動が爆速になったんだけど、実はこれでは十分ではなかった。

というのも、vimでquickrunを実行しても、(anyenvで入れた) rbenvから入れたrubyが実行されない。

ぐぐってみてもeval $(rbenv init -)をzshenvに入れるというアドバイスしか見つからず、それをすると元の低速環境に戻ってしまう…と悩んでいたが、割と簡単な解決方法を見つけた。

.zshenvに以下のように、各envツールのshimsのPATHを入れるだけ。

[ -f ~/.anyenv/bin/anyenv ] && export PATH=$HOME/.anyenv/bin:$PATH
[ -d ~/.anyenv/envs/rbenv ] && export PATH=$HOME/.anyenv/envs/rbenv/shims:$PATH
[ -d ~/.anyenv/envs/plenv ] && export PATH=$HOME/.anyenv/envs/plenv/shims:$PATH
[ -d ~/.anyenv/envs/pyenv ] && export PATH=$HOME/.anyenv/envs/pyenv/shims:$PATH

vimで:!echo $PATHを実行してみると、shimsへのPATHが入って無いことに気づいて、上記を試してみたところ上手くいった。

本来なら eval $(anyenv init -) 実行時にshimsやらのPATHが入るんだけど、vimだと上手くソレが入っていなかったみたいだった(ちゃんとデバッグできてない)。

あと、@ryot_a_rai君から rbenv init - --no-rehash という方法も教えてもらった。 これはrbenv initの挙動からrbenv rehashを行わないようにするもので、まあ普段使っている限りにおいては毎回rehashなんてしなくても良いので、これも使うことにした。

ちなみにrbenv initやらの挙動を追いかけるのに先輩の書いたブログが大変参考になった。

rbenv + ruby-build はどうやって動いているのか - takatoshiono’s blog