我不确定Vim的quickfix列表中的%t
格式说明符。它如何影响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
以下errorformat
首先:
set errorformat+=%.%#%*\\s%.%#%*\\s%l\ %f%*\\s%m
使用此errorformat
,我可以使用:cgetfile test.out
并跳转到foo.h
中的行号,但使用以下errorformat
:
set errorformat+=%.%#%*\\s%t%.%#%*\\s%l\ %f%*\\s%m
所有改变的是现在我在quickfix缓冲区中的行号后面看到一些空格,例如我看到(1之后的两个空格)
foo.h|1 | foobar
而不是
foo.h|1| foobar
所以我有两个问题:
errorformat
?答案 0 :(得分:8)
我不确定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'
在quickfix窗口中,单词“warning”为黄色,单词“error”为白色,为红色。在我的错误格式中,我使用%t,其中E或W将出现错误或警告。例如:
%trror: %m in file '%f' on line %l
答案 1 :(得分:5)
这不是你问题的真正答案,而是我自己使用的替代解决方案。 我个人认为errorformat系统太复杂了,而是使用一个非常简单的错误格式,由一个真实函数的输出提供,我通过make管道输出。 我用它:“%f \%l \%c \%m”。 我在python中编写了这些错误解析函数,但是任何支持的脚本语言都应该这样做,甚至是vimL。 这样做的逻辑是这样的函数更容易调试,在vim之外可用,并且(至少对我而言)比编写errorformat字符串更快。
答案 2 :(得分:1)
我在quickfix.txt中找到了以下示例,其中使用了%t 。
Examples
The format of the file from the Amiga Aztec compiler is:
filename>linenumber:columnnumber:errortype:errornumber:errormessage
filename name of the file in which the error was detected
linenumber line number where the error was detected
columnnumber column number where the error was detected
errortype type of the error, normally a single 'E' or 'W'
errornumber number of the error (for lookup in the manual)
errormessage description of the error
This can be matched with this errorformat entry:
%f>%l:%c:%t:%n:%m
似乎某些编译器将错误类型存储在单个字符E或W中,大概是错误和警告。
请记住,它是单个字符,因此不会与“警告”或“错误”匹配
%t error type (finds a single character)