Vim错误格式字符串,可在QuickFix中显示消息,并删除其中的一部分

时间:2018-10-15 17:01:06

标签: vim errorformat vim-quickfix

我正在写一个errorformat字符串,它在大多数情况下都起作用。我的问题是我有这样的行作为makeprg输出:

Some text I want to show in the QuickFix window^M

是的,该行以我要删除的虚假^M字符结尾。因此,我想在QuickFix窗口中找到的是这个字符,没有^M字符:

|| Some text I want to show in the QuickFix window

但是我有这个:

|| Some text I want to show in the QuickFix window^M

到目前为止,这是我的errorformat的相关部分:

set errorformat=%+GSome text%m

我已经测试过类似的东西,但没有成功:

set errorformat=%+GSome text%m%-G^M%.%#

但是会引发错误(不是来自^M的错误,它是字面意义上的Control-M字符,而不是带有M的插入符号)。

很明显,解决方案未使用%G,但我在这里很茫然。

如何从此处的行中删除行结束符?而且,删除开头的||将是一个加号,但是我认为在Vim中是不可能的。

谢谢!

进行了编辑,以使输入文字看起来更清晰

1 个答案:

答案 0 :(得分:0)

好吧,事实证明,我发现了一个解决方案,可能不是很好,但是使用了反复试验后就可以了。

set errorformat=%\\(Some Text%*[^.]).%\\)%\\@=%m

也就是说,解决方案是使用Vim中的errorformat模式(正则表达式)表达式,虽然外观看起来很神秘,但是可以和%*一起使用,以匹配该行的其余部分

该解决方案使用宽度为零的\@=,并且该行需要某种终止符,该终止符出现在我要忽略的^M字符之前,并且某种文本出现在该行的某处以匹配该行,而不是其他行。

也许有更好的解决方案,但这是我自己能做的最好的事情。