0%

VIM多文件查找与替换

Script

find . -name "*.c" | xargs sed -i "s/$1/$2/g"

VIM

多文件查找

grep

直接在vim中输入

:grep abc * 

这是直接调用unix下的grep命令

vimgrep

基本用法就是

:vimgrep /匹配模式/[g][j] 要搜索的文件/范围 
:vim[grep][!] /{pattern}/[g][j] {file} ...

g 和 j 是两个可选的标志位,g表示是否把每一行的多个匹配结果都加入。j表示是否搜索完后定位到第一个匹配位置。
要搜索的文件可以是具体的文件路径,也可以是带通配符的路径比如 .as **/.as ,**表示递归所有子目录。
要搜索的文件和或搜索范围都可以写多个,用空格分开。 例子:

:vimgrep /\/ **/*.as 搜索当前目录以及所有子目录内as文件中的 "flash"
:vimgrep /an error/ *.c 就是在所有的.c文件中搜索an error。
:vimgrep/an error/* 意思是查找当前目录下的文件中的an error,不包括子目录
定位

输入上述的命令后,可以像输入:make命令,那样定位匹配到的文件位置

:cnext (:cn)           下一个匹配位置
:cprevious (:cp)     上一个匹配位置
:cwindow (:cw)     quickfix窗口,可以选择匹配的文件位置
:cl(:clist)                查看所有匹配的位置

多文件替换(arg)

  1. 加入要处理的文件 :args *.txt
  2. 输入对上述文件的动作 :argdo %s/hate/love/gc | update (这里将hate替换成love,update表示要写入到文件中,否则只作替换而不写入)