如何在非连续行上运行命令行命令,指定单独的行号?

Rob*_*ark 3 vim

例如,假设我想取代foobar上线1,3,11和15.我怎么能这样做呢?

:1,15s/foo/bar
Run Code Online (Sandbox Code Playgroud)

将替换foobar第1-15行.但我想指定多个单独的行(1,3,11,15),而不是范围(1-15).

Ing*_*kat 6

一种方法:执行:substitute第一行,然后:&&在以下行重复相同的替换.

:execute '1s/foo/bar' | 5&& | 11&& | 15&&
Run Code Online (Sandbox Code Playgroud)

另一种方法:使用:global带有仅与行匹配的模式的命令.

:g/\%1l\|\%5l\|\%11l\|\%15l/s/foo/bar
Run Code Online (Sandbox Code Playgroud)

第三种方式:使用循环:

:for l in [1,5,11,15] | execute l.'s/foo/bar' | endfor
Run Code Online (Sandbox Code Playgroud)