PythonのLintツールを一通りVimで使えるようにする
前提
flake8、black、isort、mypyのpipインストールは完了している前提
pythonバージョンは3.9.1
% python -V Python 3.9.1
vimバージョンは9.0
:version VIM - Vi IMproved 9.0 (2022 Jun 28, compiled Jul 12 2022 16:34:31)
Flake8をVimで使う
まずは、flake8をvimで使えるようにする、プラグインvim-flake8を入れる
https://github.com/nvie/vim-flake8
syntastic というプラグインもあったが、
最低限flake8だけできれば良いので、一旦vim-flake8を選択した
(flake8を使いたいという目的であれば、使い勝手が良いvim-flake8が個人的にもおすすめ)
参考:Vimメモ : flake8でPythonのコードをチェックする
インストールは、dein.tomlに追記するだけ
% cat .vim/dein/dein.toml ... (略) ... repo = 'nvie/vim-flake8' on_ft = 'python'
追記内容詳細:https://github.com/yoshi-island/home
dein.tomlに追記しておけば、次にvimを開く時に勝手にvim-flake8がインストールされる
% vim flake8_test.py [dein] Cloning into '$HOME/.vim/dein/repos/github.com/nvie/vim-flake8'... [dein] Done: (2022/08/13 15:22:32)続けるにはENTERを押すかコマンドを入力してください
使い方は、vimでpythonファイルを開いて「F7キー」を押すだけ(F7はデフォルトで変更可能)
Macでvim-flake8が実行できない時の対応(F7キーが効かない)
BlackをVimで使う
blackはOfficial pluginがあるということで、公式ページ に載ってた
Vim-Official plugin
dein.tomlに追記するのは以下だけ
% cat .vim/dein/dein.toml ... (略) ... repo = 'psf/black'
追記内容詳細:https://github.com/yoshi-island/home
dein.tomlに追記しておけば、次にvimを開く時に勝手にblackがインストールされる
[dein] Cloning into '$HOME/.vim/dein/repos/github.com/psf/black'... [dein] Done: (2022/08/14 08:04:56)続けるにはENTERを押すかコマンドを入力してください
使い方は、vimでpythonファイルを開いて「:Black」と打つだけ
(「:Black」のBは大文字)
IsortをVimで使う
isortは、vim-isortというプラグインを使おうとしたが、結果としてうまくいかなかった、、
https://github.com/fisadev/vim-isort
dein.tomlには以下を追記
% cat .vim/dein/dein.toml ... (略) ... repo = 'fisadev/vim-isort'
vimを開くと、vim-isortはインストールされた
[dein] Cloning into '$HOME/.vim/dein/repos/github.com/fisadev/vim-isort'... [dein] Done: (2022/08/14 08:37:09)続けるにはENTERを押すかコマンドを入力してください
使い方は、vimでpythonファイルを開いて「:Isort」と打つのだが、pipでisortは入れているはずなのに以下のエラー
No isort python module detected, you should install it. More info at https://github.com/fisadev/vim-isort
pythonバージョンが3なのがいけないと思い、2(2.7.18、2.7.16)に変えてトライしてみたものの、状況変わらず、、
どうやら、pyenv virtualenvを使っているからダメっぽい気がするので、一旦ここで諦めた、、、
MypyをVimで使う
mypyは、vim-mypy というプラグインがあったのだが、
スター数が少ないのが気になり不安に思っていたところ、Readmeに「It seems both Syntastic and Neomake include support for MyPy.」という記述があった
https://github.com/Integralist/vim-mypy
syntasticとneomakeは人気そうなので、今回は「syntastic」を選択
インストールは、dein.tomlに以下を追記
syntasticは、mypyに特化したものではないので、「let g:syntastic_python_checkers = [‘flake8’, ‘mypy’]」と書けば、flake8もできる
% cat .vim/dein/dein.toml ... (略) ... # =============== # mypy # =============== repo = 'vim-syntastic/syntastic' hook_add = ''' let g:syntastic_python_checkers = ['mypy'] '''
追記内容詳細:https://github.com/yoshi-island/home
dein.tomlに追記しておけば、次にvimを開く時に勝手にsyntasticがインストールされる
[dein] Cloning into '$HOME/.vim/dein/repos/github.com/vim-syntastic/syntastic''... [dein] Done: (2022/08/16 23:38:30)続けるにはENTERを押すかコマンドを入力してください
使い方は、vimでpythonファイルを開いて「:SyntasticCheck」と打つだけ
(「:SyntasticCheck」のSとCは大文字)
今後
今回は全て手動で実行したが、保存時に自動実行できるようにtomlファイルに設定するのが一般的
だが、自分は、できれば任意のタイミングで実施したい派で、だからと言ってそれぞれ実行するのはめんどくさい、、
今回はVimの設定したけど、もしかしたら、普通にスクリプトファイルにコマンドまとめて実行するのが良いかもしれない、、
以上。