我不希望安装其它插件,像pylint.vim,

今天,我决定,而不是使用的PyDev这是一个Eclipse插件VIM编辑蟒蛇。但我得到的问题。

我在我的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 
有帮助吗?

解决方案

为什么这么用的sed刚刚正常运行在Linux上复杂吗?尝试以下方法:

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

其他提示

pylint.vim是旧的,使用syntastic代替:

https://github.com/scrooloose/syntastic

最后我决心它自己。我想与大家分享的家伙。 2行中的vimrc。

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

我建议使用ALE(异步皮棉发动机) https://github.com/w0rp/ale

它支持范围蟒棉短绒和格式化包括的 pylint的即可。约A.L.E伟大的事情,它支持许多其他语言。

您可能想尝试运行epylint,而不是仅仅pylint的。

epylint(随pylint的)是emacs的内使用(与flymake)之一。它有一些变化,特别是关于路径处理,请参阅文档字符串在pylint的/ epylint.py以获取更多信息的开始。它可以帮助你在vim了。

旁注:我不是为我自己编程VIM用户,但pylint.vim似乎仍然是一个不错的选择。但我不会质疑你的先决条件。

自动命令文件类型蟒让&makeprg =“的/ usr / local / bin中/ pylint的%”

自动命令BufWritePost里*的.py化妆

自动命令文件类型蟒让&makeprg =“的/ usr / local / bin中/ pyflakes%”

自动命令BufWritePost里*的.py化妆

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top