首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用于在QuickFix中显示消息的Vim错误格式字符串--删除其中的一部分

用于在QuickFix中显示消息的Vim错误格式字符串--删除其中的一部分
EN

Stack Overflow用户
提问于 2018-10-15 17:01:06
回答 1查看 207关注 0票数 1

我正在编写一个errorformat字符串,它在很大程度上起作用。我的问题是,我有这样的行作为makeprg输出:

代码语言:javascript
复制
Some text I want to show in the QuickFix window^M

是的,这行以我想要删除的伪^M字符结尾。所以,在我的QuickFix窗口中,我想要的是这个,没有^M字符:

代码语言:javascript
复制
|| Some text I want to show in the QuickFix window

但我有这样的想法:

代码语言:javascript
复制
|| Some text I want to show in the QuickFix window^M

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

代码语言:javascript
复制
set errorformat=%+GSome text%m

我测试过,但没有成功,像这样的东西:

代码语言:javascript
复制
set errorformat=%+GSome text%m%-G^M%.%#

但是它会抛出一个错误(不是来自^M,它是一个文字控件--M char,不是插入符号,后面是M)。

显然,解决方案不是使用%G,但我在这里感到困惑。

如何从这里的行中删除行尾字符?同时,删除最初的||也是一个好处,但我认为在Vim中是不可能的。

提前感谢!

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-10-17 17:17:03

嗯,结果我找到了一个解决方案,可能不是很好,但它是有效的,使用尝试和错误。

代码语言:javascript
复制
set errorformat=%\\(Some Text%*[^.]).%\\)%\\@=%m

也就是说,解决方案是在errorformat中使用errorformat模式(regex)表达式,这个表达式看起来非常神秘,但可以与%*一起在行的其余部分匹配未知的文本。

该解决方案使用\@=,这是一个零宽度匹配,需要行的某种终止符,它在之前出现在(我想忽略的^M字符)之前,还需要一些文本出现在行的某个位置,以匹配这一行,而不是其他文本。

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52821483

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档