LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
12
返回列表 发新帖
楼主: pingpz

VIM批量文件查找与替换?

[复制链接]
 楼主| 发表于 2005-7-4 23:35:47 | 显示全部楼层
为了在家与在公司更好过渡(其实也就是能在linux与windows两个系统间更好的切换),也因为VI本身的强大,所我选择VI

而另一个问题,也就应该是理解层面不一样!不好意思!
回复 支持 反对

使用道具 举报

发表于 2005-7-5 00:08:17 | 显示全部楼层
楼主的这个在 VIM 文档里有
不想查找的就直接看这里吧  http://vcd.gro.clinux.org/doc/usr_26.html

[php]
==============================================================================
*26.3*        改动多个文件

假定你有个变量名为 "x_cnt" 而你要把他改为 "x_counter"。这个变量在多个 C 文件都
被用到了。你需要在所有文件中作此改动。你得这么做。
   把所有相关文件放进参数列表: >

        :args *.c
<
这个命令会找到所有的 C 文件并编辑其中的第一个。现在你可以对所有这些文件执行
置换命令: >

        :argdo %s/\<x_cnt\>/x_counter/ge | update

命令 ":argdo" 把另一个命令当作其参数。而后者将对参数列表内所有的文件执行。
   作为参数的替换命令 "%s" 作用于所有文本行。它用 "\<x_cnt\>" 来查找
"x_cnt"。 "\<" 和 "\>" 用来指定仅匹配那些完整的词,而不是 "px_cnt" 或
"x_cnt2"。
   替换命令的标记中包含 "g",用以置换同一行文本内出现的所有的匹配词 "x_cnt"。
标记 "e" 用于避免因文件中找不到 "x_cnt" 而出现错误信息。否则 ":argdo" 命令
就会在遇到第一个找不到 "x_cnt" 的文件时中断。
   字符 "|" 分隔两条命令。后面的 "update" 命令将那些有改动的文件存盘。如果
没有 "x_cnt" 被改成 "x_counter",这个命令什么也不做。

还有一个 ":windo" 命令,用于在所有视窗内执行其参数所规定的命令。以及 ":bufdo"
命令,对所有缓冲执行其参数所规定的命令。使用中要小心,因为你在缓冲列表中的文
件数量可能超过你能想像的。请用 ":buffers" 命令 (或 ":ls") 来检查缓冲列表。

==============================================================================
[/php]



或在直接些
进入目录
查找
:args *.cpp
:argdu /word

替换
:args *.cpp
:argdu %s/word/NEW/eg | update




这些也可以在 vim 里用  :help 查看
如附件截图

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-7-5 09:10:52 | 显示全部楼层
谢谢版主!真不好意思 :thank
得鱼而知此地有鱼而习渔
回复 支持 反对

使用道具 举报

发表于 2006-1-3 09:39:08 | 显示全部楼层
华华,你好...牛,嘻嘻
回复 支持 反对

使用道具 举报

发表于 2006-1-3 10:40:23 | 显示全部楼层
Post by pingpz
我在windows xp下呢

Windows下也能用vim
不过开始-->查找也能顶事,你试试吧。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表