我想使用Vim对多个文件执行以下操作:
以下是我对一个文件的命令:
:%y
:%s/old1/new1/g
:G
:P
:%s/old2/new2/g
Run Code Online (Sandbox Code Playgroud)
任何人都可以告诉我这样做的语法吗?特别是我是Vim的新手!
我发现argdo可以在多个文件上执行命令.我找到了许多使用argdo替换文本的例子,但我找不到使用argdo的语法:%y,:G或:P
谢谢.
就像 @ib 提到的,我会用 ex 命令1来做到这一点
:argdo %y | %s/old1/new1/g | $pu | %s/old2/new2/g
Run Code Online (Sandbox Code Playgroud)
您也很有可能希望在独占范围上进行操作(仅对第一部分进行第一次替换,仅对第二部分进行第二次替换):
:argdo $mark a | %co$ | 1,'a s/old1/new1/g | 'a,$s/old2/new2/g
Run Code Online (Sandbox Code Playgroud)
为了允许不匹配的替换,添加s///e和添加silent!可以使操作在文件很多的情况下更快。
:silent! argdo $mark a | %co$ | 1,'a s/old1/new1/ge | 'a,$s/old2/new2/ge
Run Code Online (Sandbox Code Playgroud)
1(请注意,argdo 默认需要 Ex 命令列表。您可以使用 egargdo norm! ggyG来使用正常模式命令)