1、多文件查找
1.1、grep
直接在vim中输入:grep abc * 这是直接调用unix下的grep命令
1.2、vimgrep
基本用法就是
:vimgrep /匹配模式/[g][j] 要搜索的文件/范围
:vim[grep][!] /{pattern}/[g][j] {file} ...
g 和 j 是两个可选的标志位,g表示是否把每一行的多个匹配结果都加入。j表示是否搜索完后定位到第一个匹配位置。
要搜索的文件 可以是具体的文件路径,也可以是带通配符的路径比如 *.as **/*.as ,**表示递归所有子目录。 要搜索的文件和或搜索范围都可 以写多个,用空格分开。
例子:
:vimgrep /\<flash\>/ **/*.as 搜索当前目录以及所有子目录内as文件中的 "flash"
:vimgrep /an error/ *.c就是在所有的.c文件中搜索an error。
:vimgrep/an error/* 意思是查找当前目录下的文件中的an error,不包括子目录
1.3、定位
输入上述的命令后,可以像输入:make命令,那样定位匹配到的文件位置
:cnext (:cn) 下一个匹配位置
:cprevious (:cp) 上一个匹配位置
:cwindow (:cw) quickfix窗口,可以选择匹配的文件位置
:cl(:clist) 查看所有匹配的位置
b、输入对上述文件的动作 :argdo %s/hate/love/gc | update (这里将hate替换成love,update表示要写入到文件中,否则只作替换而不写入)
转自:http://hi.baidu.com/%EC%F8%CA%A61988/blog/item/d92aa31f3108d8efe1fe0b64.html
在我们的日常工作中,经常需要将多个文件中的某个字段替换为其他的字段,但多数的编辑器只提供了在打开文件中的查找和替换(当然,也有很多强大的编辑器支持多文件查找和替换,如EditPlus支持在所有打开文件中查找和替换等等),那么,在强大的Vim中,如何进行多文件的查找和替换呢?
答案是利用 args 命令!
举例说明,如果你想将当前目录下所有类型的文件中的 oldword 替换为 newword,那么只需要打开当前目录下的某个文件,输入如下两条命令并回车:
:args *.*
:argdo %s/oldword/newword/egc | update
接下来的工作就是确认Vim查找到的那个关键词是否要被替换。是则按下 y ,否则按下 n。
我们解释下所用到的命令:
查找操作呢?引用一下别人的命令吧:
查找
:args *.cpp
:argdo /word
替换
:args *.cpp
:argdo %s/word/NEW/eg | update
最后说一点,如果操作失误怎么办?上面的命令是直接操作文件,即存盘了的。
操作失误?那就狂按 u 吧,