我想编辑一个配置文件,并且希望当匹配到特定字符串时,在新的一行上添加一行特定的代码。我搜寻了很多资料,但找到的都是搜索和替换的方法,而我需要的是搜索并追加的方法。
就我个人而言,我认为对于这个问题,使用":g"命令可能比":s"更好。
:g/key/norm owhat ever you want
会使文本变成:
foo
bar
key
foo2
bar2
key2
blah
目标:
foo
bar
key
what ever you want
foo2
bar2
key2
what ever you want
blah
如果您想在包含模式的行之上添加新行,只需将小写字母"o"更改为大写字母"O"。
在 vim
中,\r
表示换行符。所以你可以这样做:
%s/search string/&\rnew code/
%s/^.*search string.*$/&\rnew code/
可能更好?你的方法可能会破坏原始行。例如,如果该行是 "search string=xyz" 或者 "foosearch string=barsearch string"。 - Kent\r
是替换字符串中的换行符。在搜索模式中,\n
是换行符。 - Benoit&
符号插入搜索命中结果。 - Hanan N.这是我会做的:
:g/specific string/s/.*/&specific line of code
g
命令获取所有包含 特定字符串
的行,然后对这些行应用 s
替换命令。 s
命令将整行替换为其内容加上 特定代码行
希望有所帮助
autoindent
选项,则norm o
和norm O
具有可能的优势,即它们将使用与您搜索的行相同的缩进。 - bdesham