jedi.vim で virtualenv を使ってる場合の補完

jedi.vim で使う Python の jedi を入れる簡単な方法 - Memo のコメント欄で id:shkh さんとやりとりしたのを調査してみた。
結論 virtualenv.vim を使えば OK。


普段 VirtualenvWrapper を使っていて virtualenv.vim がどうなってるのか見てみた。
まず $WORKON_HOME を指定する*1

export $WORKON_HOME='/path/to/virtualenv'

これがどこで効いてくるかというと、virtualenv-vim/plugin/virtualenv.vim 内で設定される。
vim-virtualenv/virtualenv.vim at master · plytophogy/vim-virtualenv · GitHub


virtualenv.vim は特に設定しなければ Vim を起動時に

call virtualenv#activate('')

が呼ばれて、activate 処理が走る。
その中で、virtualenv の activate_this.py を呼んでいる。
vim-virtualenv/virtualenv.vim at master · plytophogy/vim-virtualenv · GitHub


ということで、シェル側で何も考えず、workon で activate してやれば jedi.vim は自動的にその Virtualenv 内の site-packages を sys.path に追加し、利用できるようになる。

上は Arrow という日付関連のライブラリを VirtualenvWrapper でプロジェクトを作り、インストールして jedi.vim で起動してみた様子。
Arrow はシステムの site-pakacages にはインストールしていない。

*1:設定してない場合デフォルトで ~/.virtualenvs が使われる