如何把正则表达式匹配到vim的行尾?

问题描述:

我有一些线。我想在这些行中搜索正则表达式,并将匹配追加到匹配行的末尾。例如,这是输入:如何把正则表达式匹配到vim的行尾?

foo x 

这里是预期输出:

foo x foo 

我可以使用替代命令来实现这种转换:

%s/\(f\w*\).*/\0 \1/ 

但我认为这个解决方案有时难以应用或适应某些用例。我寻找一个更简单的解决方案,使用全局命令类似于:

g/\f\w*/ s/$/ <??>/ 

我想先过滤行。然后在替代命令的每一行中使用匹配。有没有让我使用全局命令中的匹配代替<??>的命令?

我不认为你可以从另一个命令访问匹配的文本。我认为匹配您想要的内容比较容易,然后匹配到行尾(使用.*)并重新启动\zs。与此类似,例如:

:%s/\v(regex).*\zs/ \1 

在此命令,重新启动所有的线被抓获后,本场比赛的位置,也是你想要的文字保存在\1

+0

@Mert整体我认为这可能会有很大的不同,取决于你的正则表达式。那么,这里只是一个想法。 – sidyll