web-dev-qa-db-ja.com

vimでpylintを使用する方法

Pylint.vimのような別のプラグインをインストールしたくありません。

そして今日、Eclipseプラグインであるpydevの代わりにvim edit pythonを使用することにしました。しかし、問題が発生しました。

これをvimrcに追加しました

autocmd BufWritePost *.py !pylint <afile>

しかし、pylintは出力にファイル名を含みません

************* Module mymodule
E: 22: invalid syntax

Shell return 2

22行目にジャンプできないので、sedを使用して出力を変更します

autocmd BufWritePost *.py !pylint <afile> | sed 's/^\(\w*\):\s*\([0-9]\+\)/<afile>:\2: \1: /g'

それは戻ります:

mymodule.py:22: E: : invalid syntax

しかし、シェルなしでvimによって2を返します。そのため、まだその行にジャンプできません。 vimはそれを正常にコンパイルしたと見なします

=========================新しいコメント=========== Vimの「autocmd」で関数を呼び出すコマンド

Makeコマンドを使用してmakeprgを設定する必要があると思うので、以下のconfigを使用します

autocmd FileType python let &makeprg='pylint <afile> | sed s/^\(\w*\):\s*\([0-9]\+\)/<afile>:\2: \1: /g'
autocmd BufWritePost *.py make

保存すると、vimは次のように戻ります。

************* Module count
E:  3: invalid syntax
(1 of 2): ************* Module count
Error detected while processing BufWritePost Auto commands for "*.py":
E492: Not an editor command:  sed s/^\(\w*\):\s*\([0-9]\+\)/<afile>:\2: 
\1: /g 
23
guilin 桂林

linuxで正しく動作するsedがなぜそれほど複雑なのですか?次のことを試してください。

set makeprg=pylint\ --reports=n\ --output-format=parseable\ %:p
set errorformat=%f:%l:\ %m
29
jceb

pylint.vimは古いので、代わりにsyntasticを使用してください。

https://github.com/scrooloose/syntastic

15
Reactormonk

ついに自分で解決しました。皆さんと共有したいと思います。 vimrcで2行。

autocmd FileType python let &makeprg='pylint %\|sed "s/^\(\w*\):\s*\([0-9]\+\)/%:\2:\ \1:\ /g"'
autocmd BufWritePost *.py make 
3
guilin 桂林

A.L.E(非同期リントエンジン)の使用をお勧めします https://github.com/w0rp/ale

pylintを含むpythonリンターとフォーマッターの範囲をサポートします。他の多くの言語をサポートすることは、A.L.Eの素晴らしいところです。

1
iamdi

pylintだけでなく、epylintを実行してみてください。

epylint(pylintに同梱)は、emacs(flymakeを使用)内で使用されるものです。特にパス処理に関して、いくつかの変更があります。詳細については、pylint /epylint.pyの先頭にあるdocstringを参照してください。それはvimでもあなたを助けるかもしれません。

補足:私は自分でプログラミングするためのvimユーザーではありませんが、pylint.vimはそれでもまともなオプションのようです。しかし、私はあなたの前提条件を疑うつもりはありません。

0
gurney alex

autocmd FileType python let&makeprg = ‘/ usr/local/bin/pyrint%’

autocmd BufWritePost * .py make

autocmd FileType python let&makeprg = ‘/ usr/local/bin/pyflakes%’

autocmd BufWritePost * .py make

0
khushbu