例如,假设我想foo
用bar
第 1、3、11 和 15 行替换。我该怎么做?
:1,15s/foo/bar
将替换foo
为bar
第 1-15 行。但我想指定多个单独的行(1、3、11、15),而不是范围(1-15)。
例如,假设我想foo
用bar
第 1、3、11 和 15 行替换。我该怎么做?
:1,15s/foo/bar
将替换foo
为bar
第 1-15 行。但我想指定多个单独的行(1、3、11、15),而不是范围(1-15)。
一种方法:执行第一行,然后在以下行:substitute
重复相同的替换。:&&
:execute '1s/foo/bar' | 5&& | 11&& | 15&&
另一种方法:使用:global
仅在行中匹配的模式的命令。
:g/\%1l\|\%5l\|\%11l\|\%15l/s/foo/bar
第三种方式:使用循环:
:for l in [1,5,11,15] | execute l.'s/foo/bar' | endfor
你怎么想出行号?如果这是一个手动的视觉检查过程,您可以使用多选插件。它允许您选择多个不连续的范围,然后您可以对它们应用命令:
:MSExecCmd s/foo/bar