免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 865 | 回复: 0
打印 上一主题 下一主题

[学习分享] Linux使用vim进行多文件查找和替换的方法(转) [复制链接]

论坛徽章:
1
金牛座
日期:2014-05-27 16:05:18
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2015-06-03 13:14 |只看该作者 |倒序浏览
vim是Linux系统下常用的文本编辑,通过使用多种shell命令能够实现多文件的查找和替换,那么具体会使用到那些命令呢?下面小编就给大家介绍下Linux系统vim多文件查找和替换的方法。
在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
  :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,就不会写入,但相应的替换也会被中断)。
  最后强调一点,使用替换命令的时候,一定记得备份,因为替换是直接写入硬盘。
  上面就是Linux系统vim多文件查找和替换的方法介绍了,通过find,sed等命令能够实现多文件的相关处理,你也可使用vim内置的多文件查找命令。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP