之前有朋友问过我,Vim(gvim)中怎么实现多文件的查找和替换呢?当时确实一直没有考虑过这个问题,因为一直在linux下都有grep,sed这样强力的工具,并不需要vim来实现这样的操作,但是也有很多朋友在windows下也使用gvim来进行编辑,那么就很有必要研究一番了。
第一,多文件查找
vimgrep是vim自带的一个工具,类似于grep的用法就可以实现。比如要在当前目录查找word,使用如下:
:vimgrep word *
如果想要递归查找所有下级目录里面,那么就用
:vimgrep word **
另外,如果想要在使用是快捷查找当前光标下的字母,则只需要在vimrc中添加如下代码:
"对搜索的设置
map ft :call Search_Word()<CR>:copen<CR>
function Search_Word()
let w = expand("<cword>") " 在当前光标位置抓词
execute "vimgrep " . w . " *"
endfunction
通过vimgrep查找到的结果会生成到quickfix中,如下图:
第二,多文件替换
实际上只要如下两个命令即可(假设要将当前目录下所有扩展名为.txt/.cpp的文件中的hate替换成love):
:args *.txt *.cpp
:argdo ...