Xeebi

home categories feeds

Vim を +python3 に切り替えて快適 jedi ライフ

Vim はこれまでずっと +python できたのだが,最近書くのはもっぱら python3 だしということで とうとう +python3 に切り替えることにした. 正確に言うと html.parser みたいに python 3.x で構成の変わったモジュールの補完が効かなくて 悲しみが溜まったので思い切った,という方が正しい.

どうやら,というかこの辺のことをあまり把握してないんだけど,僕の環境で python2/3 両対応にしようとすると バイナリには組み込まずに dynamic に外部見に行く感じの /dyn でコンパイルされ, その結果 :echo has(‘python’) とかが 0 を返したりする +python3/dyn であっても python3 を呼びに行けないことがある などややややこしそうい場合があるようだ1

そこでもう +python は捨てることにする.幸い jedi-vim はしばらく前からこれに対応しているので実害はない.現在入っているプラグインでは gf を拡張する vim-gf-python が動かなくなるが,まあ許容範囲内. 一応 issue で 提案 はされてるみたいでもあるし.

というわけで早速ビルドだ.

$ cd ~/src/vim # clone してるとこ
$ ./configure --with-features=huge --enable-gui=gtk2 --enable-python3interp --enable-rubyinterp --enable-luainterp --enable-fail-if-missing

$ make
$ sudo make install

でおっけー. $ vim --version-python, +python3 ということになる.

jedi の設定はそのまま引き継げばいいけど,あえて書きなおすにしても neocomplete のヘルプにも書いてあったり色々するので適当に. ひとつ気をつけるべきは, デフォルトの補完やさん pythoncomplete (@vim/autoload/pythoncomplete.vim) は python 2 のみ対応なので この設定がどっかに残ってるとエラーがでてハマります.(注: vim が python3 無視してるんじゃなくて,python 3 用には python3complete が用意されてる)

というわけでこれで python3 を楽しくエディットできますね.めでたしめでたし.

jedi3.png

たのしいえでぃっと

  1. 僕の環境がこれだった.あと,Debian や Ubuntu では同時利用が(そのままでは)できないというようなこともあるらしい(vim-jp.org, vim-jp/issues).