使用VI搜索/替换多行

时间:2016-06-16 11:06:12

标签: ubuntu vi

我正在尝试使用VI在Ubuntu上编辑文件,因此我可以使用两行搜索/替换。每个文件的行通常在不同的行上(所以我不能逐行使用搜索)和我正在寻找的文本是

[wan2]
#disable = yes

他们总是一个接一个,我想把它从上面改为下面

    [wan2]
disable = yes

我已经尝试了几种不同的方法,但我继续得到以下内容:

E486: Pattern not found: [wan2]\n#disable = yes 

下面和一些细微的改动就像我来的那样接近,我希望这是一个愚蠢的我可以解决但我有点难过。

:s/[wan2]\n#disable = yes /[wan2] \ndisable = yes

1 个答案:

答案 0 :(得分:1)

Ex命令

最可靠的方法是使用Ex命令:

:/wan2/+1s/^#//

在字符串s/^#//出现后的行上运行wan2/wan2/+1表示。作为Ex命令,这具有在所有Vi实现(不仅仅是Vim)中工作的优点。

Vim替换

您的Vim替换命令没有转义方括号,因此[wan2]部分正则表达式将被解释为匹配的字符集合。此外,“是”之后的尾随空格可能阻止了匹配。以下内容也适用于Vim:

:s/\[wan2\]\n#disable = yes/[wan2]\rdisable = yes/