Aug 29, 2012 -
vim
No Comments


Vim multi-file search and replace
实现了查找文件夹,自然会遇到文件夹多文件替换。那么vim是怎么实现的呢?
通过两个命令:
:args :argdo
具体是怎么操作的呢?首先建立一些测试文件夹和文件,结构如下:
vim-test ├── folder1 │ ├─ 1.html │ └─ forder1-1 │ └─11.js │ ├── folder2 │ ├─ 2.txt │ └─ forder2-1 │ └─21.css └── index.html
不管是html还是css还是js,里面的内容都是:
111 222 333 444 555
首先打开index.html, 这样vim也就进到vim-test目录
执行:
:args *.*
这样将当前目录下所有类型的文件都加入到参数列表中(不包括子文件夹中的文件),其实就是把index.html加入了参数列表里。
然后再执行:
:argdo %s/111/I want/egc | update
可以看到index.html的111被替换成”I want”了
参数说明:e是正则模式,为了区分大小写。g是对每一行中匹配的地方都替换。c是确认。
再继续测试:
:args */*.html :argdo %s/222/fuck/g | update
说明:*/*.* 是将当前目录下 所有在子文件夹中的目录和子文件夹中的文件(不包括下一级文件)加入参数列表中。 那么 */*.html就是将当前目录下 所有在子文件夹中的html文件(不包括下一级文件)加入参数列表中。
可以看到只有1.html的222被替换成”fuck”了
继续:
:args */*.* :argdo %s/333/fuck/g | update
可以看到只有1.html和2.txt的333都被替换成”fuck”了
继续:
:args **/*.* :argdo %s/444/fangbingxin/g | update
可以看到,vim-test文件夹里所有文件中的”444″都被替换成了”fangbingxin”
是不是很简单 :)