题
我不希望安装其它插件,像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代替:
最后我决心它自己。我想与大家分享的家伙。 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化妆