10

今天代码中有两个宏的名字改了,这两个宏在程序中使用范围比较广,使用频率也很高,一个个手工替换显然不现实。
Source Insight提供了一个改名的功能,可以很方便的完成改名。

不过Easwy在这里要介绍是在Linux下使用Vi来完成改名,实际上也非常容易。Easwy使用的命令如下:

vim `egrep -rl 'AAA|CCC' * |grep -v .svn`
:argdo %s/AAA/BBB/ge | %s/CCC/DDD/ge | w

第一条命令是一个Shell命令,这条命令使用Vi打开当前目录下所有包含AAA或CCC宏的文件。其中egrep查找所有包含AAA和CCC的文件,然后使用带”-v“参数的grep把位于版本控制目录中的文件过滤掉。最后,egrep所找到的文件做为Vim的命令行参数传入。

第二条命令是Vi命令,这条命令把上述文件中所有的AAA替换为BBB,把CCC替换为DDD,并保存文件。想读懂这条Vi命令,请阅读手册”:help argdo

当然,在要修改的文件数目非常多时,最好使用sed之类的流编辑器,此时使用Vim效率会比较低。

更多关于Vim的内容,请关注易水博客上的其它文章。

原创文章,请阅读页脚的许可方式,转载请注明:转载自易水博客 [ http://easwy.com/blog/ ]

本文链接地址: http://easwy.com/blog/archives/replace-string-in-multiple-files/

文章的脚注信息由WordPress的wp-posturl插件自动生成

文本处理

5条评论 添加评论

  1. 2010/09/10 19:49 | #1

    [...] This post was mentioned on Twitter by 大房, Easwy. Easwy said: [easwy.com] 易水博客文章: [Vim] 批量替换程序中的字符串 http://easwy.com/blog/archives/replace-string-in-multiple-files/ [...]

  2. 2010/09/18 14:38 | #2

    博主研究vim比较多啊。vim和sed都只会写基本操作。复杂的记不住。不过它们确实很强大。

  3. sk
    2010/10/07 21:41 | #3

    搭车请教个问题。 我装了xml.vim插件。 编辑XML的时候是挺好用的。
    可是,不知道为什么,在编辑所有文本的时候,我只要写了然后就自动给我出来个,然后我还要手动去把它去掉。 这个是在哪里设置的呢?让它只对某特定类型文件生效?谢谢

  4. sk
    2010/10/07 21:42 | #4

    评论不允许有XML 标签阿!
    那句是:我只要写了《ABC》然后就自动给我出来个《/ABC》
    全角的书名号应该可以吧。

  5. 2010/10/08 09:25 | #5

    @sk
    这个插件应该只对XML文档起作用的,我怀疑你把插件放错了位置,不应该放在~/.vim/plugin目录,而应该放在~/.vim/ftplugin目录

    想输入<abc>,需要输入&lt;abc&gt;

评论本文