1.带表达式的替换示例
有很多行
drv[16].vif = drv_if.xxxx[0];
drv[17].vif = drv_if.xxxx[1];
drv[18].vif = drv_if.xxxx[2];
drv[19].vif = drv_if.xxxx[3];
..................
想要将 左边 drv[16] 改为 drv[15] , 即匹配左边数字并减1
使用命令
%s,drv\[\(\d\+\)\],\=("drv[").(submatch(1)-1).("]")
拆分来看
1 %s,a,b 或%s/a/b 可以用b替换A
2 drv 指文中匹配drv字符
3 \[ 中括号使用\来标识,是个符号
4 \( \) 通过括号括起来的字符可以被保存起来,再后续使用\1 或者submatch(1) 来取用
5 \d 表示匹配数字
6 \+ 表示匹配多个 与\d组合 表示匹配多个数字
7 \= 表示后续是个表达式
8 \=后().().()的方式将后续拼接起来
9 "drv[" 表示字符串 drv[
10 submatch(1)-1 即数字表达式
2.根据行号进行的替换内容
原内容为
test_001
test_001
test_001
test_001
test_001
想要根据行号变为 101 102 103 104
使用替换语句
%s,\d\+,\=line('.')+100,g
拆分来看
1.%s,表示全局替换
2. \d\+ 匹配多个数字
3. \= 表示后面是个函数
4 line('.') 返回当前行的行号
5 +100 表示 行号的数加100