内置编译器插件 pyunit
正如jamessan所建议的那样,一种选择是使用内置的编译器插件pyunit
:
:compiler pyunit
:set makeprg=python3\ %
:make
不利之处在于,它会将堆栈跟踪折叠为一条错误消息。例如以下python脚本:
def lumberjack():
bright_side_of_death()
def bright_side_of_death():
return tuple()[0]
lumberjack()
...产生此错误消息:
|| Traceback (most recent call last):
lumberjack.py|7| IndexError: tuple index out of range
编写自己的编译器插件
或者,您可以在以下位置提供自己的编译器插件
~/.vim/compiler/python.vim
:
if exists("current_compiler")
finish
endif
let current_compiler = "python"
let s:cpo_save = &cpo
set cpo&vim
CompilerSet errorformat=
\%*\\sFile\ \"%f\"\\,\ line\ %l\\,\ %m,
\%*\\sFile\ \"%f\"\\,\ line\ %l,
CompilerSet makeprg=python3\ %
let &cpo = s:cpo_save
unlet s:cpo_save
使用手动选择插件:compiler python
,或通过将插件添加到来自动加载插件~/.vim/after/ftplugin/python.vim
:
if !exists("current_compiler")
compiler python
endif
使用上面的python脚本,Vim用以下命令填充quickfix窗口:
|| Traceback (most recent call last):
lumberjack.py|7| in <module>
|| lumberjack()
lumberjack.py|2| in lumberjack
|| bright_side_of_death()
lumberjack.py|5| in bright_side_of_death
|| return tuple()[0]
|| IndexError: tuple index out of range
请参阅:help write-compiler-plugin
以获取更多信息。
errorformat
并为Vim编写一个编译器插件(请参阅:help :compiler
和:help write-compiler-plugin
)。如果您不确切知道自己在做什么,并且没有足够的热情从文档中挖掘出所有内容,则可能不值得付出努力。