Vi/Vim全局替换基本语法

在vim编辑中,编辑器使用指定的字符模式对文件中的每行进行检查,使用新字符串来替换模式。
全局替换使用命令 :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,100 s/old/new/g
下面的命令把整个文件中的old的每次出现都改为new:
:1,$ s/old/new/g

确认替换:

使用搜索替换命令有时候会出错,而得到不想要的结果。在替换命令尾部加上c (confirm用于确认),在替换每个old前都会提示并确认:
:1,30 s/old/new/gc

确认替换

将会出现提示replace with hehe (y/n/a/q/l/^E/^Y)?
y替换,n不替换,a替换所有,q放弃,l替换第一个并进入插入模式,^E和^Y是提示你用Ctrl+e或Ctrl+y来滚动屏幕的。

上下文相关替换:

除了直接使用一个单词(或短语)替换另一个,还有稍微复杂的全局替换语法。这些语法可以对一个模式进行搜索,一旦找到含有模式的行,就可以使用不同与模式的串进行替换,我们把这种替换叫做上下文相关替换。

语法格式:
:g/pattern/s/old/new/g

上下文替换

将会把包含pattern的行中,把所有old替换为new
第一个g表示是在文件的所有行上执行的命令,模式pattern识别要发生替换的行。在那些包含模式pattern的行上,将把old替换(s)为new,最后的g表示在该行上进行全部替换。

如果用来进行搜索的模式与想要修改的模式相同,就不必重复:
:g/string/s//new/g 等价于 :g/string/s/string/new/g

注意:
:g/string/s//new/g 也等价于 :% s/string/new/g

  • 5
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

曹宇飞丶

您的鼓励是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值