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行,那么结果如下:
   

vim区域查找替换2

OK,这次的介绍就到此为止啦~~~

 

版权所有,转载请注明出处.http://www.vimer.cn

使用Vim(gvim)实现复杂的查找替换的一个例子

今天老婆在整理文档的时候希望能快捷的排版某些格式,无奈发现word并不能满足要求,所以就让我用Vim试一下。 问题如下: 1 加州大学伯克利分校 University of...

阅读全文

1则回应给“vim正则表达式查找替换(5)-等号整理和指定区域查找替换”

  1. 欧阳西风说道:

    博主好,有个vim的问题请教一下:像如下的文本:HelloWorld HelloWorldDoSomethingSpecial DoSomethingSpecialEnglishConditionAction EnglishConditionActionThisIsASentenceForTesting ThisIsASentenceForTesting如果我想实现每一行的第一部分更改为下划线连接的单词,第二部分不变,用vim的话应该怎么来完成?如下:HELLO_WORLD HelloWorldDO_SOMETHING_SPECIAL DoSomethingSpecialENGLISH_CONDITION_ACTION EnglishConditionActionTHIS_IS_A_SENTENCE_FOR_TESTING ThisIsASentenceForTesting先谢谢了

    [回复]

发表评论