OK,继续我们的Vim正则查找替换系列~~,这一次主要有两个技巧,第一个是=的整理,第二个是vim实现固定区域的查找替换。
呃,不知道到底是带给我们的这个习惯了,似乎大家在写int a=1;的时候都喜欢在=左右都加上两个空格,编程int a = 1;但是有时候面对别人写的代码,并不是这样的风格就会很想帮他改一下,怎么办呢?vim呗~~
命令如下:
:%s/\s*=\s*/ = /g
这样的话,vim就会自动帮你完成啦,当然看语句也能看出来,他是只要匹配到=就会帮你自动编程 = ,所以对于那些注释和字符串中的=也有可能帮你误转,笔者没有想到什么好的方法,你可以在g后面加个c,即
:%s/\s*=\s*/ = /gc
这样每次替换都会要求你确认,呵呵,不过也有点麻烦哦……
好啦,接下来是vim中的区域查找替换,vim这么强大的工具当然是支持只替换一部分文本啦,那么怎么实现呢?
:'a,'bg/fred/s/dick/joe/g
这是Best of VIM Tips里面的一个例子,解释一下:
'a和'b 指定范围(注意,前面是单引号,不是1左边那个).这个范围是用ma和mb指定的,可以用m{a-z}指定26个位置,以后用'{a-z}就可以直接跳到这个位置,其实就是书签的功能,查看所有的书签,可以用:marks
而这个语句就是实现了,在a和b标签之间,对包含fred的行中的dick替换成joe
如
a标签在第4行,b标签在第9行,那么结果如下:
OK,这次的介绍就到此为止啦~~~
版权所有,转载请注明出处.http://www.vimer.cn
原创文章,版权所有。转载请注明:转载自Vimer的程序世界 [ http://www.vimer.cn ]
本文链接地址: http://www.vimer.cn/?p=531


vim正则表达式查找替换(5)-等号整理和指定区域查找替换