LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 911|回复: 8

vi能不能对目录下的所有文件执行相同的操作。

[复制链接]
发表于 2006-4-20 09:06:43 | 显示全部楼层 |阅读模式
比如,我想对某个目录下的文件执行相同的替换操作,该如何做?
发表于 2006-4-20 11:50:18 | 显示全部楼层
只知道sed可以,不知vi行不行。
回复 支持 反对

使用道具 举报

发表于 2006-4-20 12:24:32 | 显示全部楼层
这类事情就是sed的工作。。。。
回复 支持 反对

使用道具 举报

发表于 2006-4-20 12:38:46 | 显示全部楼层
for i in *.c; do vim -c "%s/foo/bar/g | w | q" $i; done

将当前目录中C源码中的foo替换为bar,但sed不是更好。
回复 支持 反对

使用道具 举报

发表于 2006-4-20 19:32:48 | 显示全部楼层
如果你用 Vim,
:h argdo
回复 支持 反对

使用道具 举报

发表于 2006-4-20 19:41:52 | 显示全部楼层
:argdo能递归吗?只能类似glob匹配。

find+'vim -c'是可以递归处理的。

但这类任务还是用sed这样非交互编辑器好一点。
回复 支持 反对

使用道具 举报

发表于 2006-4-22 06:47:26 | 显示全部楼层
Post by seamonkey
:argdo能递归吗?只能类似glob匹配。

find+'vim -c'是可以递归处理的。

但这类任务还是用sed这样非交互编辑器好一点。


如果要递归处理 /usr/include 下面 *.inc 文件, 可以:

  1. :args /usr/include/*.inc /usr/include/**/*.inc
  2. :argdo
复制代码


:h file-searching
回复 支持 反对

使用道具 举报

发表于 2006-4-22 12:46:39 | 显示全部楼层
谢谢,**能深入250层,足够了。
回复 支持 反对

使用道具 举报

发表于 2006-4-22 13:26:10 | 显示全部楼层
Post by seamonkey
谢谢,**能深入250层,足够了。


这个在bash上似乎没用,vim专用的?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表