Quantcast
Channel: Vimタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 5608

MacVim-kaoriya で pyenv の Python3 を読みこませる方法

$
0
0

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_HOMEpythonthreedllを指定すれば良いとのこと(参照: 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 のキーバインドすばらしすぎるので覚えてよかった。


Viewing all articles
Browse latest Browse all 5608

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>