備忘録的な

プログラミングや機械学習に関する備忘録

Windows+Vim(terminal利用)+Python3.6の環境構築

Vimゆるふわ勢(自分)向けの備忘録です.

Vim8.1で端末ウィンドウがサポートされました.
ぜひ使いたいのですがゼロ(ソースコード)から環境構築するのはちょっと,という場合,
vim-win32-installerか,vim-jp(vim-kaoriya)からバイナリーをダウンロードしてくることになります.
しかし,

  • vim-win32-installerはterminalに対応していない(v8.1.0229)
  • vim-kaoriyaはterminalに対応しているがPython3.5ベース

という問題があります.

今回はvim-kaoriyaを使ってPython3.6で開発できる(補完やコードチェック機能を使える)ことを確認しました.

0. 前提

Pythonは3.6で,Minicondaで環境構築しています.Windows 10 Pro/Homeで確認しました.

1. vim-kaoriyaの用意

vim-jp(vim-kaoriya)からバイナリーをダウンロードして展開します.
ダウンロードしたのはvim81-kaoriya-win64-8.1.0005-20180520.zipです.
terminalが使えることを確認しておきます.

:echo has('terminal')

と打って1が返ってくれば大丈夫です.
f:id:canard0328:20180802164012p:plain:w400
この状態でterminalでPythonを実行することが可能です.
f:id:canard0328:20180802165745p:plain:w300

2. completorによる補完

補完にはcompletorを使います.
vimのパッケージ管理にはVundleやpathogenなどいろいろありますが,ゆるふわ勢な自分はvim8に組み込まれているパッケージマネージャーで十分です.
completorのドキュメントに従って,
$HOME/vimfiles/pack/completor/startフォルダを作成して,
completorをgit cloneするだけです.

Pythonの補完を有効にするにはjediが入っている必要があります.なければ

pip install jedi

で入れましょう(私の場合は気が付いたら入ってましたが,Minicondaの場合conda install jedi?).

次に,completorのドキュメントによると$HOME/_vimrcに次のように書けとあります.

let g:completor_python_binary = '/path/to/python/with/jedi/installed'

私の場合は

let g:completor_python_binary = 'C:\Users\username\Miniconda3'

としました.

設定を終えvimを起動すると次のようなメッセージが出ます.
f:id:canard0328:20180802165849p:plain
この状態では補完が機能しません.
そこで,次のようにPython3.6のdllの場所を$HOME/_vimrcに書いてあげます.

set pythonthreedll=c:\Users\username\Miniconda3\python36.dll

するとこのように,completorの補完機能は有効になったようですが,なぜかPythonの補完ができません.
f:id:canard0328:20180802165934p:plain:w400
そこで,先ほど書いた

let g:completor_python_binary = 'C:\Users\username\Miniconda3'

を削除します.

無事のPythonの補完ができるようになりました.
(なぜこれで上手くいくのか分かりません...)
f:id:canard0328:20180802170026p:plain:w300
Minicondaの仮想環境にのみインストールされているパッケージの補完もできます.
f:id:canard0328:20180802170102p:plain:w350

3. flake8を使ったコードチェック

コードチェックはvim-flake8などが有名ですが,vim8以降に対応しているALEを使用します.

completorのときと同じようにドキュメントに従って,
$HOME/vimfiles/pack/git-plugins/startフォルダを作成して
さらにaleフォルダ内にgit cloneします.

設定も同様にドキュメントに従い,$HOME/_vimrcに以下を追記します.

let g:ale_linters = {'python' : ['flake8'],}

Pythonにflake8が入っていなければpip install flake8またはMinicondaの場合conda install flake8します.

ちゃんとコードチェックしてくれるようになりました.
f:id:canard0328:20180802170143p:plain

あとは自分好みに環境を整えて完成です.
terminalの使い方はこれから勉強します.
f:id:canard0328:20180802170221p:plain

Vimはこれで勉強してます.