【发布时间】:2012-02-20 01:55:19
【问题描述】:
我正在尝试编辑配置文件并希望在匹配特定字符串时添加特定的代码行(在换行符上)...我搜索的所有内容都会搜索和替换,我正在寻找用于搜索和追加...
【问题讨论】:
我正在尝试编辑配置文件并希望在匹配特定字符串时添加特定的代码行(在换行符上)...我搜索的所有内容都会搜索和替换,我正在寻找用于搜索和追加...
【问题讨论】:
vim \r 是换行符。所以你可以做这样的事情
%s/search string/&\rnew code/
【讨论】:
%s/^.*search string.*$/&\rnew code/ 可能会更好?你的可能会打破原来的路线。例如,如果该行是“search string=xyz”或“foosearch string=barsearch string”
\r 是替换字符串中的新行。在搜索模式中\n 是新行。
& 符号插入搜索命中
这就是我会做的:
:g/specific string/s/.*/&specific line of code
g 命令获取包含specific string 的所有行,然后将s 替换命令应用于这些行。 s 命令将整行替换为其内容加上specific line of code
HTH
【讨论】:
就我个人而言,我认为在这个问题上使用“: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”即可。
【讨论】:
norm o 是put ='whatever you want'
autoindent 选项,norm o 和norm O 可能具有的优势是它们将使用与您正在搜索的行相同的缩进。