我使用的 c++ 编译器(由 ant 启动)会产生不同格式的错误。例如:
[应用] /localdev/foo.cc:10:29: 错误: foo.h: 没有这样的文件或目录
(让我们称之为格式A)
并采用以下格式:
[应用] /localdev/foo.cc:307: 错误: 预期 ';' 在“标准”之前
(让我们称之为格式 B)
注意格式 A 有一个额外的列说明符。
我正在尝试创建一个匹配两者的 vim 错误格式。
我有:
set errorformat=\ %#[apply]\ %f:%l:%c:\ error:\ %m
set errorformat+=\ %#[apply]\ %f:%l:\ error:\ %m
但我似乎无法让 Vim 与 Format B 匹配。
我知道errorformat本身是正确的,因为如果我注释掉第一个errorformat设置,我可以匹配错误格式B。如果我注释掉第二个errorformat设置,我可以匹配错误格式A。
请注意,如果我反转errorformat设置,那么当 Vim 遇到错误 Format A 时,它会尝试打开一个名为“/localdev/foo.cc:10”的文件,当然找不到。(看起来 vim 有一个贪婪的匹配算法,在这种情况下,匹配文件的字符串也包括行号)。
将匹配格式 A 和格式 B 的正确错误格式设置是什么?
我在互联网和 vim 文档上查看了使 %c “可选”的方法,但我还没有找到秘密。
谢谢你。