替换字符串

2022-08-16  本文已影响0人  sweetBoy_9126

替换命令

:substitute

公式

:[rang]s/{pattern}/{string}/[flags]
[] 里的内容是可选的

基础用法

替换当前行里的指定字符串

vnode

比如我们想将当前行的 vnode 替换成 haha,可以使用
:s/vnode/haha
注意我们需要按回车确认更改,否则当我们再次切回 normal 模式后还是会回到修改前的字符串

而且当我们使用替换命令的时候编辑器下方会出现对应的替换命令

rang

范围

vnode

vnode vnode
vnode

比如:我们想替换当前文件下所有的 vnode 就可以使用 %
命令如下:
:%s/vnode/hhh
上面的内容就会变成

hhh

hhh vnode
hhh

注意:默认情况下所有的范围匹配的都是满足条件行里的第一个匹配的字符串,如果当前行有多个满足条件的字符串,那么除第一个外都不会匹配
比如:

vnode vnode

只会将第一个vnode变成 hhh
如果你想把所有满足条件的字符串都匹配的话就需要使用 flag 里的 g

pattern

模式
匹配要替换的字符串,可以是正则表达式
比如:

h1aha
h2aha

我们想将上面的两行统一替换为 hhh,这时我们就需要用正则匹配1和2
:%s/h[1,2]aha/hhh

string

要替换成的字符串

flag

vnode
vnode vnode

使用命令 :%s/vnode/hhh/g
就会变成

hhh
hhh hhh

会有五个选项
y: 替换当前光标高亮的那个字符串
n: 当前光标高亮的这个不替换
a: 把所有匹配的都替换
q: 退出
l: 把当前光标高亮的这个替换然后退出

可视化模式下

无需使用范围
当我们使用可视化模式选中一个区域后再按冒号,它会自动帮我们生成一个'<,'>的范围,也就是我们选中的区域的开始和结尾

比如:
:s/vnode/hhh
就会自动变成
:'<,'>s/vnode/hhh

查看更多替换命令

打开终端
在终端里输入 vim
然后 输入 :help s_flags 回车

多选操作

test
test

gb gb c hhh
将两个 test 改为 hhh

上一篇 下一篇

猜你喜欢

热点阅读