Vim errorformat多个条目

时间:2015-08-20 23:42:32

标签: vim errorformat

我正在使用的c ++编译器(由ant启动)会产生不同格式的错误。例如:

  

[apply] /localdev/foo.cc:10:29:错误:foo.h:没有这样的文件或目录

(让我们称之为格式A)

,格式如:

  

[apply] /localdev/foo.cc:307:错误:预期&#39 ;;'在' std'

之前

(让我们称之为格式B)
注意格式A有一个额外的列说明符 我正在尝试创建一个匹配两者的vim错误格式 我有:

  

设置errorformat = \%#[apply] \%f:%l:%c:\ error:\%m
  set errorformat + = \%#[apply] \%f:%l:\ error:\%m

但我似乎无法让Vim将格式B与之匹配。
我知道errorformat本身是正确的,因为如果我注释掉第一个errorformat设置,我可以匹配错误格式B.如果我注释掉第二个errorformat设置,我可以匹配错误格式A. 请注意,如果我反转errorformat设置,那么当Vim遇到错误格式A时,它会尝试打开名为" /localdev/foo.cc:10"的文件,当然找不到。 (看起来vim有一个贪婪的匹配算法,匹配文件的字符串在这种情况下也包括行号)。

什么是匹配格式A和格式B的正确错误格式设置?
我已经查看了互联网和vim文档,了解如何制作%c"可选",但我还没有找到秘密。
谢谢。

1 个答案:

答案 0 :(得分:1)

你可以这样做:

let &errorformat =
    \ '%\s%#[apply] %f:%l:%c: %trror: %m,' .
    \ '%\s%#[apply] %f:%l: %trror: %m'