MacVim-Kaoriya は Python3 の場所を教えてあげると Python3 を使ってくれる。
ここを見るとそのやり方が書いてあるが、システムワイドに Python3 をインストールした場合のものである。
set pythonthreedll=/usr/local/Cellar/python3/3.3.0/Frameworks/Python.framework/Versions/3.3/Python
Python を pyenv で管理している場合に手こずったものの、方法がわかったのでメモする。
ちなみに、Vim で動く Python を 3 系にすることによって、jedi-vim などのプラグインも Python3 で動くようになる。
Vim で使われる Python が 3 になっていないと、vim-pyenvを使っても jedi-vim が Python3 の補完をしてくれなかった。
方法
まず、pyenv で Python.framework 付きの Python 3 をインストールして、有効化する(記事執筆時点で最新の安定板である3.5.1を例とする)。
ちなみにこの例では OS X の system にある Python 2 を生かしてある。
$ env PYTHON_CONFIGURE_OPTS="--enable-framework" pyenv install 3.5.1
$ pyenv global system 3.5.1
この状態で、vimrc のできるだけ上の方に次の設定をする。
let $PYTHON_HOME=expand("~/.pyenv/versions/3.5.1/Python.framework/Versions/3.5")let&pythonthreedll=expand($PYTHON_HOME).'/Python'
これで :py3 1
を Vim で実行してエラーが表示されなければ🆗。
ポイント
MacVim-Kaoriya の @splhackさんによれば、$PYTHON_HOME
と pythonthreedll
を指定すれば良いとのこと(参照: https://twitter.com/splhack/status/707438192186826752)。
自分の環境ではユーザ名が異なるマシンで同じカスタマイズの Vim を使いたかったので、相対パスで Python3 の位置を指定する必要があった。
VimL では環境変数は let
して、システム設定は set
するが、set
でオプションに与えるものはテキストでなければならず、しかも式や変数が評価されない(こんなことはわたしのようなにわか Vimmer ではわからない)。
そこで set option
で式・変数の評価を可能にする let &option
を用いて相対パスを有効化した。
set pythonthreedll=~/.pyenv/versions/...
でもいいんじゃないのと思われるかもしれないが、なぜか ~
や $HOME
は pythonthreedll では解釈されない(set undodir=~/...
とかはいける)ためにしばらくハマっていた。
余談
ここまでやってやっと Python3 のコード補完が効くようになるけど、最近かまっている Spacemacsはレイヤーを入れるだけですぐ使えるので、Vim 乗り換えちゃおうかという感じ。
Vim は今年から始めたばかりで、使えるようにするまでがつらすぎた。。
でも Vim のキーバインドすばらしすぎるので覚えてよかった。