[英]how to use pylint in vim
我不想安装另一个插件,比如 pylint.vim,
今天,我决定使用 vim edit python 而不是 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 认为它编译成功
======================== 新注释 ============ 在 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:
最后我自己解决了。 我想和你们分享。 vimrc 中的 2 行。
autocmd FileType python let &makeprg='pylint %\|sed "s/^\(\w*\):\s*\([0-9]\+\)/%:\2:\ \1:\ /g"'
autocmd BufWritePost *.py make
我建议使用 ALE(异步 Lint 引擎) https://github.com/w0rp/ale
它支持一系列 python linter和格式化程序,包括pylint 。 ALE 的一大优点是它支持许多其他语言。
autocmd FileType python let &makeprg='/usr/local/bin/pylint %'
autocmd BufWritePost *.py make
autocmd FileType python let &makeprg='/usr/local/bin/pyflakes %'
autocmd BufWritePost *.py make
现在 vim 为pylint
了一个编译器文件。 这意味着如果您启用了文件类型检测( filetype plugin indent on
),则无需外部插件即可使用。
:set makeprg?
应该向您展示 pylint 是发出:make
时将调用的内容。 如果没有,您需要使用:compiler! pylint
将其设置为当前编译:compiler! pylint
:compiler! pylint
。
现在,要让它工作,您需要传递一些参数,以便 pylint 知道要 lint 的内容,最明显的是您想要 lint 的内容,即要链接的文件名或目录。 因此,要对当前缓冲区进行 lint,请运行:make %
。 要检查当前目录,请运行:make .
同样的机制可以扩展为使用 flake8,或者任何类型的文件的任何 linter。 请参阅:h :compiler
。
您可能想尝试运行 epylint 而不仅仅是 pylint。
epylint(与 pylint 一起提供)是在 emacs(与 flymake 一起)中使用的。 它有一些变化,特别是关于路径处理,请参阅 pylint/epylint.py 开头的文档字符串以获取更多信息。 它也可以在 vim 中帮助您。
旁注:我不是自己编程的 vim 用户,但 pylint.vim 似乎仍然是一个不错的选择。 但我不会质疑你的先决条件。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.