24

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を設定する必要があると思うので、以下の設定を使用します

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 
4

7 に答える 7

29

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

set makeprg=pylint\ --reports=n\ --output-format=parseable\ %:p
set errorformat=%f:%l:\ %m
于 2010-10-01T21:53:07.973 に答える
16

pylint.vim古いので、代わりにシンタスティックを使用してください:

https://github.com/scrooloose/syntastic

于 2010-10-01T13:19:55.873 に答える
4

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

autocmd FileType python let &makeprg='pylint %\|sed "s/^\(\w*\):\s*\([0-9]\+\)/%:\2:\ \1:\ /g"'
autocmd BufWritePost *.py make 
于 2010-10-01T16:02:52.993 に答える
3

ALE (Asynchronous Lint Engine) を使用することをお勧めしますhttps://github.com/w0rp/ale

pylintを含むさまざまな python リンターとフォーマッターをサポートしています。他の多くの言語をサポートする ALE の優れた点。

于 2018-08-03T05:00:49.117 に答える
-1

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

epylint (pylint に付属) は、emacs 内で (flymake と共に) 使用されるものです。特にパス処理に関していくつかの変更があります。詳細については、pylint/epylint.py の冒頭にあるドキュメント文字列を参照してください。vimでも役立つかもしれません。

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

于 2010-11-23T07:38:12.753 に答える