如果有人问我最好的文字编缉工具是什么,我会很肯定的告诉他是vim 。最初使用vim的时候可能会感到无所适从,不过一但用习惯了,你会发现其他文字工具在其面前真的不值一提。下面就针对其替换功能在实际应用中的作用,发表下自己的一点心得。

例1、配置DHCP服务

在windows中我们能过ipconfig -all命令查到的ip和mac情况如下:

1Physical Address. . . . . . . . . : 00-E0-4C-75-DF-2F
2 Dhcp Enabled. . . . . . . . . . . : Yes
3 Autoconfiguration Enabled . . . . : Yes
4 IP Address. . . . . . . . . . . . : 192.168.20.16
5 Subnet Mask . . . . . . . . . . . : 255.255.255.0
6 Default Gateway . . . . . . . . . : 192.168.20.254

而我在配置linux服务器上配置DHCP服务时,mac地址之间是“:”隔开的。不过可以你在写配置文件时,可能并未注意到这个问题。当写完以后发现时,再进行手动去修改,这绝对是个麻烦的问题。诚然,我们可以在window下的编辑工具去修改。不过编辑工具的替换要把其他不该换的“-”也换成“:”。而vim就能很好的避免这个问题。

 1host zhichi2 {
 2    next-server marvin.redhat.com;
 3    hardware ethernet 1C-6F-65-EF-40-BD;
 4    fixed-address 192.168.30.16;
 5}
 6host zhichi3 {
 7    next-server marvin.redhat.com;
 8    hardware ethernet 50-E5-49-66-55-41;
 9    fixed-address 192.168.30.17;
10}
11host zhichi4 {
12    next-server marvin.redhat.com;
13    hardware ethernet 50-e5-12-20-fd-f7;
14    fixed-address 192.168.30.18;
15}
16host zhichi5 {
17    next-server marvin.redhat.com;
18    hardware ethernet F0-DE-D1-4B-B6-4B;
19    fixed-address 192.168.30.19;
20}

面是我从linux的dhcp配置文件里取出来的一部分。我如果想把上面的mac地址部分里的“-”换成“:”,只需要用vim编缉该文件。在命令模式下输入:

1g/hardware/s/-/:/g

就可以把所有hardware行的“-”换成“:”,而fixed行的“-”和next行的“-”确不会受到影响。如果想只换hardware行里的第一次出现的“-”,只需要把上面的最后的个g去掉就行了。即:

1g/hardware/s/-/:/

例2:批量注释配置文件

还是拿上面的配置文件说事吧。为了便于查看,我利用vim的“:set nu”功能为每一行都标上了行号。这次的需求是我想把最后一个配置给注释掉。即第16行到最后一行的内容。

 11 host zhichi2 {
 22 next-server marvin.redhat.com;
 33 hardware ethernet 1C:6F:65:D1:40:BD;
 44 fixed-address 192.168.30.16;
 55 }
 66 host zhichi3 {
 77 next-server marvin.redhat.com;
 88 hardware ethernet 50:E5:49:31:55:41;
 99 fixed-address 192.168.30.17;
1010 }
1111 host zhichi4 {
1212 next-server marvin.redhat.com;
1313 hardware ethernet 50:e5:49:20:fd:f7;
1414 fixed-address 192.168.30.18;
1515 }
1616 host zhichi5 {
1717 next-server marvin.redhat.com;
1818 hardware ethernet F0:DE:F1:4B:B6:4B;
1919 fixed-address 192.168.30.19;
2020 }

而这次我只需在vim的命令模式下输入:

116,$ s/^/#/

上面的“$”代表的是最后一行,如果后面还有内容,可以将其换为20,这样就会把16行到20行的前面全加#号。如果想取消上面的注释也很简单。反其道而行之就行了。

116,$ s/^#//