vi小技巧

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
 

猜你喜欢

转载自esmh23.iteye.com/blog/986702