加入收藏 | 设为首页 | 会员中心 | 我要投稿 拼字网 - 核心网 (https://www.hexinwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 教程 > 正文

linux下vim多文件查找与替换教程

发布时间:2022-06-15 05:16:01 所属栏目:教程 来源:互联网
导读:在Linux系统上,我们可以在vim中使用find,sed,grep,awk,perl等shell命令来操作多文件查找及多文件替换,下面来看具体内容. 在linux平台上,有很多优秀的shell命令组合来做多文件查找/替换,比如这些命令:find,sed,grep,awk,perl,但其他平台比如windows上就没那么
  在Linux系统上,我们可以在vim中使用find,sed,grep,awk,perl等shell命令来操作多文件查找及多文件替换,下面来看具体内容.
 
  在linux平台上,有很多优秀的shell命令组合来做多文件查找/替换,比如这些命令:find,sed,grep,awk,perl,但其他平台比如windows上就没那么方便了,这时候vim内置的多文件查找命令就有用武之地了,虽然比起外部命令来稍微慢了一点点儿.
 
  vim 多文件查找
 
  这个vim内置命令就是vimgrep,有两种基本的使用方式:
 
  :vim[grep][!] /{pattern}/[g][j] {file} ...
  :vim[grep][!] {pattern} {file} ...
  file部分支持通配符,*代表当前目录,**代表当前目录及其子目录(递归),比如*/*.c代表当前目录下的c源程序文件,**/*.c代表当前目录及其递归子目录下的所有源程序文件,file部分可以指定多次,以下命令查看匹配结果:
 
  :cn[ext] 下一个结果
  :cp[revious] 上一个结果
  :cw[indow] quickfix窗口,结果文件列表
  更详细的用法参见:help vimgrep 和下面的refs.
 
  vim 多文件替换
 
  实际上只要如下两个命令即可,假设要将当前目录下所有扩展名为.txt/.cpp的文件中的hate替换成love:
 
  :args *.txt *.cpp :argdo %s/hate/love/gc | update
  //phpfensi.com
  :args *.txt *.cpp
  :argdo %s/hate/love/gc | update
  就可以完成啦,解释如下:
 
  :args *.txt *.cpp
  
  :args *.txt *.cpp
  这样写会扫描当前目录下的.txt 和 .cpp文件,并加入到参数列表,但是这样写只会稻苗当前目录,如果想要递归扫描所有下级目录的话,用:
 
  :args **/*.txt
  
  :args **/*.txt
  如果只想扫描下一级目录,即不扫描当前目录的话,用:
 
  :args */*.txt
  
  :args */*.txt
  
  //而
  
  :argdo %s/hate/love/gc | update
  
  :argdo %s/hate/love/gc | update
  是将参数列表中的所有文件的hate提换成love,并写入硬盘,如果没有|update,就不会写入,但相应的替换也会被中断.
 
  最后强调一点,使用替换命令的时候,一定记得备份,因为替换是直接写入硬盘滴哦……
 
  好啦,希望这篇文章对大家有用~

(编辑:拼字网 - 核心网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!