vim 全局替换真正使用的是两个ex命令是 :g(global全局)和:s(switch替换)。


替换命令的语法如下:
: s/old/new/
这将把当前中模式old的第一次出现修改为new。 /(斜杆)是命令不同部分之间的分隔符(当斜杆为该行的最后一个字符时,可不写)

: s/old/ new/ g
把当前行old的每次出现改为new,而不只是该行的第一个old。:s命令允许替换串后面带有选项,上面语法中的g代表全局(g选项影响一行中的每个模式,不要把它与影响文件中所有行的:g命令混淆)

通过在 :s 命令前加上地址前缀,可以把它的范围扩展到多行。例如下面命令把50行到100行的old的每次出现都改为new:
: 50,100s/old/new/g

下面的命令把整个文件中的old的每次出现都改为new:
:1,$s/old/new/ g
我们知道%等价于1,$,所以上行命令也可以这样写:
:%s/old/new/g
展开
评论