有馬総一郎のブログ

(彼氏の事情)

2018年10月19日 01:48:39 JST - 3 minute read - Vim

Windows版香り屋版VimでPythonを利用したプラグインを使う

Windows使いであれば 香り屋版Vimを使っているVimmerは多いと思う。

最近、neovimに移行したり、

上記プラグインの移行を試みたりしてみた。

GUI版VIMを使わざるえないWindows環境で vim-singletonが使えないのは厳しく、また、個人的に試した中では neovim-qtは安定しているとは言い難い。

Vim8であればterminalが使えるし、set transparency=220すれば透過できる、そしてPythonを利用したプラグインも利用可なので、そんなにneovimに拘る必要はないかなぁと思ってる。

とはいえ、 香り屋版Vim1でPythonを利用するプラグインを利用するのに、ちょこちょこ詰まったのでメモ。

まず、当たり前だが、 Pythonをインストール。

  • Windows x86-64 embeddable zip file
  • Windows x86-64 executable installer

とかあるけど、zipだとScriptsフォルダ、pipとが入ってないので、インストーラー版を選んだほうが良い。ここではpython-3.6.5-amd64.exeをダロンロード・インストール。

インストール後、python.exeの親フォルダまでのパス それから、 Scripts\pip.exeの親フォルダまでのパス を環境変数のPATHに追加する。

そして、使うのはneovimではないが、pip install neovimをコマンドプロンプトで叩いてneovim用のpythonパッケージをインストールする。

いざ利用しようとecho has('python3')で有効化を確認するも有効化になってない…

VimとPythonのバージョン — KaoriYaにあるとおりpy3 print(sys.version)を実行すると

E370: ライブラリ python35.dll をロードできませんでした
E263: このコマンドは無効です、ごめんなさい: Pythonライブラリをロードできませんでした.

なエラーメッセージが出るので 香り屋版Vimでコンパイル時に指定されている有効なPythonのバージョンが3.5だと分かる。もしパージョンが合っているのに、同様のエラーが出る場合は、64bitと32bitとの差異があると思われる。有効ならば以下のようなメッセージが表示される。

3.5.3 (v3.5.3:1880cb95a742, Jan 16 2017, 16:02:32) [MSC v.1900 64 bit (AMD64)]

となると、 defx.nvimといった

defx requires Python3.6.1

3.6以上のpythonを必要とするプラグインが使用できない。その場合、set pythonthreedll2といったオプションを使えば

set pythonthreedll=C:\Python36\python36.dll

Python 3 共有ライブラリの名前を指定できる。

これでpy3 print(sys.version)を実行すると

3.6.5 (v3.6.5:f59c0932b4, Mar 28 2018, 17:00:18) [MSC v.1900 64 bit (AMD64)]

となり、3.5より最新のPython3を利用することができる。

ちなみに download : vim onlineから配布している32bit版Vimは、コンパイル時に指定された DYNAMIC_PYTHON3_DLL の値が3.7となっているが、64bit版のメンテナンスは中止されている。


  1. VIM - Vi IMproved 8.1 (2018 May 17, compiled May 20 2018 12:40:33) ↩︎

  2. options - Vim日本語ドキュメント ↩︎