yoshiislandblog.net
元営業の駆け出しアラサーSEが、休日にMACと戯れた際の殴り書きメモ。日々勉強。日々進歩。
Vim_(text_editor)-Logo.wine

PythonのLintツールを一通りVimで使えるようにする

2022-08-17

前提

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はデフォルトで変更可能)

20220817_flake8_vim

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は大文字)

20220817_black_vim_1
20220817_black_vim_2

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

syntasticneomakeは人気そうなので、今回は「syntastic」を選択

  • https://github.com/vim-syntastic/syntastic
  • https://github.com/neomake/neomake
  • インストールは、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は大文字)

    20220817_mypy_vim

    今後

    今回は全て手動で実行したが、保存時に自動実行できるようにtomlファイルに設定するのが一般的
    だが、自分は、できれば任意のタイミングで実施したい派で、だからと言ってそれぞれ実行するのはめんどくさい、、
    今回はVimの設定したけど、もしかしたら、普通にスクリプトファイルにコマンドまとめて実行するのが良いかもしれない、、

    以上。