Vim 用于在 QuickFix 中删除部分消息的错误格式字符串

Vim errorformat string to show message in QuickFix removing part of it

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

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

是的,该行以我要删除的虚假 ^M 字符结尾。所以,我在 QuickFix window 中想要的是这个,没有 ^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 字符,而不是插入符号后跟 M)。

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

如何从此处的行中删除行结束符?而且,删除初始 || 将是一个加号,但我认为在 Vim.

中是不可能的

提前致谢!

已编辑以使输入文本看起来更清晰

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

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

也就是说,解决方案是在 errorformat 中使用 Vim 模式(正则表达式)表达式,它看起来很神秘但可以工作,与 %* 一起匹配未知文本在线路的其余部分

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

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