how to use pylint in vim
我不想安装其他插件,例如pylint.vim,
今天,我决定使用vim edit python代替ecdevse插件pydev。 但是我遇到了问题。
我已经在我的vimrc中添加了
1 | autocmd BufWritePost *.py !pylint |
但是pylint在输出中不包含文件名
1 2 3 4 | ************* Module mymodule E: 22: invalid syntax shell return 2 |
所以它不能跳到第22行,所以我用sed更改了输出
1 | autocmd BufWritePost *.py !pylint | sed 's/^\(\w*\):\s*\([0-9]\+\)/:\2: \1: /g' |
它返回:
1 | mymodule.py:22: E: : invalid syntax |
但是没有shell,vim返回2。 因此它仍然无法跳到那条线。 vim认为编译成功
========================新评论============
在Vim的`autocmd`命令中调用一个函数
我想也许我应该使用make命令并设置makeprg,所以我在配置下面使用
1 2 | autocmd FileType python let &makeprg='pylint | sed s/^\(\w*\):\s*\([0-9]\+\)/:\2: \1: /g' autocmd BufWritePost *.py make |
当我保存时,vim返回:
1 2 3 4 5 6 | ************* 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]\+\)/:\2: \1: /g |
为什么这么复杂,而sed只能在Linux上正常工作?请尝试以下操作:
1 2 | set makeprg=pylint\ --reports=n\ --output-format=parseable\ %:p set errorformat=%f:%l:\ %m |
https://github.com/scrooloose/syntastic
最后我自己解决了。我想和你们分享。在vimrc中有2行。
1 2 | autocmd FileType python let &makeprg='pylint %\|sed"s/^\(\w*\):\s*\([0-9]\+\)/%:\2:\ \1:\ /g"' autocmd BufWritePost *.py make |
我建议使用A.L.E(异步Lint Engine)https://github.com/w0rp/ale
它支持一系列python linter和formatter,包括pylint。关于A.L.E的伟大之处在于它支持许多其他语言。
autocmd FileType python let&makeprg =" / usr / local / bin / pylint%"
autocmd BufWritePost * .py使
autocmd FileType python let&makeprg =" / usr / local / bin / pyflakes%"
autocmd BufWritePost * .py使
您可能想尝试运行epylint而不是pylint。
epylint(与pylint一起提供)是emacs(与flymake)一起使用的一种。它有一些更改,尤其是关于路径处理的更改,有关更多信息,请参见pylint / epylint.py开头的docstring。它也可能对您有所帮助。
旁注:我不是自己编程的vim用户,但pylint.vim似乎仍然是一个不错的选择。但我不会质疑您的先决条件。