VIM 多文件查找替换

转载 2012年03月21日 10:56:09

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)                查看所有匹配的位置


2、多文件替换(arg) 
a、加入要处理的文件  :args *.txt

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 命令,将当前目录下所有类型的文件都加入到参数列表中(不包括子文件夹中的文件,),以备后续操作。
args命令我还没完全搞清楚,嘿嘿。实验了下,使用 :args */* 的话,是将当前目录下 所有在子文件夹中的目录和子文件夹中的文件(不包括下一级文件)加入参数列表中。
了解了这点,你也可以只替换需要的类型,如 :args *.html。举一反三,反不出来的,再去Google,呵呵。 
第二行,使用 argdo 命令,对参数列表中的文件进行替换操作。s 就是替换命令了,加上 % 指对所有行,即全文匹配。g 指对每一行中所有匹配的地方都执行替换,e 指使用正则模式,为了区分大小写。最后的 c 指每次替换前,都要确认一下。 

查找操作呢?引用一下别人的命令吧:



查找
:args *.cpp
:argdo /word
替换
:args *.cpp
:argdo %s/word/NEW/eg | update

最后说一点,如果操作失误怎么办?上面的命令是直接操作文件,即存盘了的。
操作失误?那就狂按 u 吧,




VIM 多文件查找替换

Vim中也可以像普通ide那样的在多个文件中查找的功能,用的是:vimgrep这条命令,格式如::vimgrep /AAA/ **/*.* 。执行这条命令后,可以通过:cw命令打开匹配的窗口进行查询结...

Unity3D帮助文档跳转缓慢----Vim编辑器批量替换文件内容

装上Unity3D后,打开脚本手册,使用查询功能的时候,总是要卡在那里1分钟左右才给出结果,很是郁闷。...

vim 单文件替换方法

:s 命令进行替换操作 % 所有行 g 单行内所有匹配项 i 忽略大小写 c 确认是否替换 基本语法关键词 old 替换为 new :s/old/new ...

用VIM替换掉文件内容里的“\r\n”

公司的 Mac OSX 虚拟机有两个珍贵的文件: .bash_profile 顾名思义,这是bash的配置文件,每次打开Terminal是都会调用。该配置文件里有相当多便捷的命令、快捷方式。.vim...
  • ba_jie
  • ba_jie
  • 2016年11月19日 16:26
  • 2021

shell脚本中调用vim 替换指定路径下文件中的字符串

#作者:zxx #日期:2012.04.19 #功能描述:在FIND_PATH路径下所有名为FILE_NAME的文件内容中,将SOURCE串替换为DEST串 #比如下例:将/home/zxx/文...

VIM下,在文件及目录中查找字符串的方法 (vimgrep)

 以前用editplus的时候,有一个在文件中查找的功能,可以在所有打开的文件中查找字符串,也可以在某一个目录及它的子目录中查找.那么在VIM中是否也有相关的功能呢?答案当然是肯定的.VIM中有...

VIM下,在文件及目录中查找字符串的方法 (vimgrep)

以前用editplus的时候,有一个在文件中查找的功能,可以在所有打开的文件中查找字符串,也可以在某一个目录及它的子目录中查找.那么在VIM中是否也有相关的功能呢?答案当然是肯定的.VIM中有个类似g...

VIM下,在文件及目录中查找字符串的方法 (vimgrep)

以前用editplus的时候,有一个在文件中查找的功能,可以在所有打开的文件中查找字符串,也可以在某一个目录及它的子目录中查找.那么在VIM中是否也有相关的功能呢?答案当然是肯定的.VIM中有个类似g...

vim文件查找

vim查找文件   查找文件      假定现在你在编辑一个 C 程序, 该程序有这样一行:       #include "inits.h"       你想要查看文件 "inits.h" 里有些什...

linux文件内容查找与vim工具的使用

cat命令,tac命令:cat命令和tac命令刚好相反,cat命令是从第一行到最后一行显示,而tacc...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:VIM 多文件查找替换
举报原因:
原因补充:

(最多只允许输入30个字)