1.基本替换
:s/str1/str2 替换当前行的第一个str1为str2
:s/str1/str2/g 替换当前所有str1为str2
:n,
s/str1/str2替换第n行到最后一行中的每一行的第一个str1为str2:n,
s
/
s
t
r
1
/
s
t
r
2
替
换
第
n
行
到
最
后
一
行
中
的
每
一
行
的
第
一
个
s
t
r
1
为
s
t
r
2
:
n
,
s/str1/str2/g 替换第n行到最后一行中的所有的str1为str2
:%s/str1/str2 替换每一行的第一个str1为str2
:%s/str1/str2/g 替换每一行的所有的str1为str2
2.使用#作为分隔符(中间出现的/不会作为分隔符)
:s#str1/#str2/# 替换当前行第一个str1/为str2/
:%s+/str11/str12/+/str21/str22/+ 使用+替换,/str11/str12/替换为/str21/str22/
3.[range]
不写range :默认为光标所在行
. :光标所在的行
1 :第一行
:最后一行2:第2行‘a:标记a所在的行.+1:当前光标所在行的下一行
:
最
后
一
行
2
:
第
2
行
‘
a
:
标
记
a
所
在
的
行
.
+
1
:
当
前
光
标
所
在
行
的
下
一
行
-1 :倒数第二行
10,20 :第10行到第20行
1,
:第一行到最后一行1,.:第一行到当前行.,
:
第
一
行
到
最
后
一
行
1
,
.
:
第
一
行
到
当
前
行
.
,
:当前行到最后一行
‘a,’b :标记a所在行到标记b所在行
% :所有行
?chapter? :从当前行位置向上搜索,找到第一个chapter所在行
/chapter/ :从当前行位置向下搜索,找到第一个chapter所在行
4.[flags]
无 :只对指定范围内的第一个匹配项进行替换
g :对指定范围内的所有匹配项进行替换
c :在替换前请求用户确认
e :忽略执行过程中的错误