例如,假设我想用0123,替换foo
在第1,3,11和15行。我该怎么做?如何在不连续的行上运行命令行命令,指定单独的行号?
:1,15s/foo/bar
将bar
上线1-15代替foo
。但我想指定多个单独的行(1,3,11,15),而不是范围(1-15)。
例如,假设我想用0123,替换foo
在第1,3,11和15行。我该怎么做?如何在不连续的行上运行命令行命令,指定单独的行号?
:1,15s/foo/bar
将bar
上线1-15代替foo
。但我想指定多个单独的行(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
你如何拿出行号?如果这是目视检查的手动过程,则可以使用multiselect plugin。它允许你选择多个非连续的范围,然后你可以在它们上应用一个命令:
:MSExecCmd s/foo/bar
完美,谢谢@Ingo_Karkat!我非常喜欢3种不同的选择。 –