1、10,20行整体右移4个空格
:10,20s/^/ /g
2、10,20行整体左移4个空格
:10,20s/^ //g
3、删除每行尾部的一个字符
:%s/.$//g
或者
:1,$/.$//g
4、替换字符 &或者\0都表示前面模式匹配的字符串
如有文件
ip group
7
10
200
这是个不全的ip表,可以使用如下命令将其补全,假设都是192.168.128.网段
:%s/^/192.168.128./g
或者
:%s/[0-9][0-9]*/192.168.128.&/g
或者
:%s/[0-9][0-9]*/192.168.128.\0/g
5、更加灵活更加准确的替换
在匹配时可以使用模式,将需要精确替换的模式用\(和\)括起来,就代表一个精确匹配组,
在替换时允许有多个匹配组,在替换时,分别用\1,\2,\3表示匹配组
例如:
代码中有如下语句:
pInfo->next->name = strName;
我们发现不是它的next节点的name,而是previous节点的name,那么我们可以使用命令将其替换了:
:%s/\([a-zA-Z_][a-zA-Z0-9_]*\)->\([a-zA-Z][a-zA-Z]*\)->name/\1->pre->name