2010-10-01 33 views
18

我不想安裝其它插件,像pylint.vim,如何使用pylint的在vim

今天,我決定使用vim編輯蟒蛇代替的PyDev這是一個Eclipse插件。但我有問題。

我在我的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 

但沒有shell返回2由vim。所以它仍然不能跳到那條線。 vim認爲它編譯成功

=========================新評論=========== Call a function in Vim’s `autocmd` command

我想,也許我應該使用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 

回答

25

爲什麼如此複雜的sed,只能在Linux上正常工作?請嘗試以下操作:

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

謝謝。正是我想要的。但是,%:p的意思是什麼? errorformat是一個vim變量,它會如何影響pylint? – 2010-10-02 03:08:46

+1

'%:p'表示使用文件的完整路徑 – idbrii 2011-02-23 20:19:14

+4

很好的答案。但是--output-format現在是pylint 1.0.0中的一個棄用選項。替代方法是使用'set makeprg = pylint \ --reports = n \ --msg-template = \「{path}:{line}:\ {msg_id} \ {symbol},\ {obj} \ {msg} \ 「\%:p' – JohnTESlade 2014-02-21 17:17:42

3

最後我自己解決。我想與大家分享一下。 vimrc中有2行。

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

我使用jceb的答案 – 2010-10-03 14:10:16

+0

謝謝我能夠使用它並尋找更長的時間。但我覺得應該更新一些。如果pylint報告任何錯誤,我們可以拆分屏幕嗎?現在,如果它是大錯誤,並丟失這個信息 – user765443 2017-02-09 05:51:37

+0

我能夠使用它,但我想拆分錯誤,如果我得到任何錯誤any possible possible – user765443 2017-02-09 05:54:06

0

您可能想嘗試運行epylint而不是僅運行pylint。

epylint(與pylint一起發貨)是emacs中使用的(與flymake)。它有一些變化,尤其是在路徑處理方面,請參閱pylint/epylint.py開始處的文檔字符串以獲取更多信息。它也可以幫助你。

旁註:我不是一個編程自己的vim用戶,但pylint.vim仍然是一個不錯的選擇。但我不會質疑你的先決條件。

0

自動命令文件類型蟒蛇讓& makeprg = '在/ usr/local/bin目錄/ pylint的%'

自動命令BufWritePost裏*的.py使

自動命令文件類型蟒蛇讓& makeprg ='在/ usr/local/bin目錄/ pyflakes%'

autocmd BufWritePost *。py make