vim で python を書いてる時に flake8 をいい感じに実行する
vim 素人の @tk0miya です。
いままで .vimrc が 1バイト(改行文字)しかないってバカにされていたんですが、ようやくその呪縛を解く時が来ました。
python のリントツールとしてよく使われている flake8 を編集時に実行しようと思っていろいろ調べました。
適当にぐぐってみると 3 つほど vim プラグインを見つけました。
- vim-flake8 https://github.com/nvie/vim-flake8
- flake8-vim https://github.com/vim-scripts/Flake8-vim
- khuno https://github.com/alfredodeza/khuno.vim
それぞれ、2,3 分触った感触をまとめます。
vim-flake8
最初に見つけたやつです。
vim で python 開発するとき pyflakes + PEP8 = flake8 が便利 - 憧れ駆動開発 などで紹介されていました。
標準では F7 キーを押すと flake8 を実行するようになっています。
いちいち F7 を押すのはダルいので、README を参考に以下の設定をしておくと保存するときに flake8 を実行してくれます。
autocmd BufWritePost *.py call Flake8()
表示はこんな感じ。
雑感:
- ふつうに使える
- flake8 を同期的に実行しているせいなのか、保存するときに僅かにもたつきがある
- 警告の一覧は別ウィンドウに表示する
- 警告用に出てくるウィンドウは大きめ
- すべての警告をクリアして保存するとウィンドウは勝手に消える
flake8-vim
同じ作者のものが https://github.com/vim-scripts/Flake8-vim と https://github.com/andviro/flake8-vim の
2箇所で公開されているでどっちか新しそうな方を使うといいと思います。
僕は前者で試しましたが、よく見ると後者の方が日付が新しいですね。
Python用のvimの設定 - memorandum などで紹介されていました。
こちらは特に設定せずとも、ファイル保存時に flake8 を実行してくれます。
表示はこんな感じ。
問題があった行の左側に EE というマークが付くようになります。
雑感:
khuno
読み方がわかりませんが、k を読まずに ふーの と勝手に呼んでます。
日本語の紹介記事は見当たらず。
こいつは他の二つと異なり、flake8 を非同期実行するというのがポイントのようです。
I started this plugin because I am (was! ha!) pissed off at the alternatives. Most solutions require a blocking call to the checker program, you can't do anything else until that call ends.
That is unacceptable. I can't work like that. This plugin will not block while you work in Vim.
README を読むと Insert mode から抜けるときなどに flake8 を実行しているようです。
使った感じだとファイルを開いた時、保存した時などにも実行している模様。
Undo/Redo の時は実行しないので警告が残ってしまうことも。
表示はこんなかんじです。
警告ウィンドウを表示せず、問題箇所をハイライトさせます。
警告ウィンドウを表示したい場合は :Khuno show コマンドを実行すると良いようです。
ただし、このウィンドウは該当箇所をすべて直しても勝手に消えません。
雑感:
- ふつうに使える
- 非同期に flake8 を実行するのでもたつきは感じられない
- 標準では警告の一覧は表示しないので見落としがありそう
- :Khuno show を何かに割り当てるとよいのかも
まとめ
表示がシンプルでストレスの少ない khuno を使ってみることにします。
あまり警告を一覧表示することに重きを置いていないので*2、
ハイライト表示だけというのも気軽でいいですね。
しばらく試してみることにします。