如何在 vim 中替换一行?

如何在 vim 中替换一行?

我有一个 ipv6 hosts 文件。不,我想在包含“google.com.hk”的每一行中添加注释符号 #。

我如何在 vim 中执行此操作?我以为会是这样的%s/^.*google\.com\.hk/^#???/

谢谢。

答案1

在替换文本中使用来&代表整个原始字符串:

%s/^.*google\.com\.hk/#&/

或者,为了避免替换诸如not-google.com.hk和之类的东西google.com.hk.example.com

%s/^.*[ .]google\.com\.hk\( \|$\)/#&/

或者,使用该g命令将s命令应用于所有匹配的行:

g/[ .]google\.com\.hk\( \|$\)/ s/^/#/

答案2

像这样:

%s/\(^.*google\.com\.hk\)/# \1/

这告诉 VIM 搜索括号中的内容(在本例中为 )^.*google\.com\.hk,并将其放入变量中。然后\1,用 替换之前找到的所有内容。#\1

或者,你可以这样做:

%s/^.*google\.com\.hk/# &/

其中 是&的简写刚刚匹配的

相关内容