1

我正在写一个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字面控制-M char,而不是插入符号后跟 M)。

显然该解决方案没有使用%G,但我在这里不知所措。

如何从此处的行中删除行尾字符?而且,删除首字母||会是一个加号,但我认为在 Vim 中是不可能的。

提前致谢!

编辑以使输入文本的外观更清晰

4

1 回答 1

0

好吧,事实证明我找到了一个解决方案,可能不是很好,但它确实有效,使用反复试验。

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

也就是说,解决方案是使用 中的Vim模式(正则表达式)表达式errorformat,它具有相当神秘的外观但可以工作,同时%*匹配行其余部分的未知文本

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

可能有更好的解决方案,但这是我自己能做的最好的。

于 2018-10-17T17:17:03.387 回答