And*_* F. 8 vim types errorformat
我不确定%t
Vim的quickfix列表中的格式说明符.它如何影响quickfix缓冲区的行为/显示?
我试着用以下测试文件找到它:
$ cat test.out
foo Error 1 foo.h foobar
bar Error 2 foo.h foobar
foobar Warning 3 foo.h foobar
barfoo Warning 4 foo.h foobar
Run Code Online (Sandbox Code Playgroud)
以下是errorformat
第一个:
set errorformat+=%.%#%*\\s%.%#%*\\s%l\ %f%*\\s%m
Run Code Online (Sandbox Code Playgroud)
有了这个errorformat
,我可以使用:cgetfile test.out
并跳转到行号foo.h
,但具有以下内容errorformat
:
set errorformat+=%.%#%*\\s%t%.%#%*\\s%l\ %f%*\\s%m
Run Code Online (Sandbox Code Playgroud)
所有改变的是,现在我在quickfix缓冲区中的行号后面看到一些空格,例如我看到(1之后的两个空格)
foo.h|1 | foobar
Run Code Online (Sandbox Code Playgroud)
代替
foo.h|1| foobar
Run Code Online (Sandbox Code Playgroud)
所以我有两个问题:
errorformat
?我不确定Vim的quickfix列表中的%t格式说明符,它如何影响quickfix缓冲区的行为/显示?
它告诉quickfix缓冲区匹配的错误类型(错误,警告或信息).然后,quickfix缓冲区将在行号后显示该信息,并以不同的颜色突出显示.例如,这是一个警告和错误:
hosts.cfg|3473 error| Could not add object property
hosts.cfg|3790 warning| Duplicate definition found for host 'mailgateway'
Run Code Online (Sandbox Code Playgroud)
在quickfix窗口中,单词"warning"为黄色,单词"error"为白色,为红色.在我的errorformat中,我使用%t,其中E或W将出现错误或警告.例如:
%trror: %m in file '%f' on line %l
Run Code Online (Sandbox Code Playgroud)
小智 5
这不是你问题的真正答案,而是我自己使用的替代解决方案.我个人认为errorformat系统太复杂了,而是使用一个非常简单的错误格式,由一个真实函数的输出提供,我通过make管道输出.我用它:"%f \%l \%c \%m".我在python中编写了这些错误解析函数,但是任何支持的脚本语言都应该这样做,甚至是vimL.这样的逻辑是这样的函数更容易调试,在vim之外可用,并且(至少对我来说)比编写errorformat字符串更快.