我有一个文件,看起来像这样:
acc abcd etc. etc.
// line 1
// line 2
acc more words
// 3-4 more lines
acc some other words有些行是以acc开头的,有些行不是以acc开头的。我想把那些不是以@@开头的行和那些以它开头的行合并起来,这样我的文件在操作后就只有acc开头的行了:
acc abcd etc. etc.@@//line 1@@//line 2
acc more words@@//3-4 more lines
acc some other words我尝试了下面的命令,使用global分隔每一组行,并用@@替换\n
:%g/^acc.*\_.\{-}\(^acc\)\@=/s/\n/@@/g但在:g的每个模式匹配中,我只能将第一个\n替换为@@。
我在这个命令中做错了什么?有没有更简单的方法来做这件事?谢谢。
发布于 2020-08-10 04:25:28
我宁愿在几个简单直观的步骤中完成它,而不是在一个复杂而难以推理的步骤中完成它。对于这类问题,这似乎是一种更有效的方法。
例如:
:v/^acc/s/^/@@
:%s/\n^@@/@@/解释:
acc开头的行前缀以@@,@@替换为@@,从而有效地将所有@@行连接在一起,并使用acc行。https://stackoverflow.com/questions/63328399
复制相似问题