2010-02-03 67 views
26
在vim

一个常见的编程任务对我来说是:如何搜索vim中的文件目录?

:s/some pattern/ 

做了一些工作

n #找到下一个入口

做了一些工作

n #找到下一个入口 .. 。

Now,s/.... only searches在当前文件中。

有没有办法我可以做到这一点,但搜索整个目录的文件?对于pwd的子目录中的所有文件,请做“s /..../”,结束于.hpp .cpp

谢谢!

+0

这只是一种解决方法,所以我不会将它发布为答案:您可以在一个vim会话中打开所有文件,以便您可以:n到下一个,然后录制一个宏,该宏执行:s/... /和:n并执行足够多次的宏。 (运行宏常常不会造成任何伤害,因为替换将会一次又一次地用于最后一个文件) – Frank 2010-02-03 09:27:12

回答

26

您可以简单地使用:grep command:或者为了更完整地整合搜索工具,请使用grep.vim extension

只需输入:help grep即可获得有关Vim开箱即用的很好文档。 使用:grep foo *.?pp应该做你想做的。 这将打开QuickFix list,就像使用:make获得的那个一样,可以跳转到找到的事件。

3
:help windo 
:help bufdo 
man find 
man xargs 

find ./start/point -iname "*.cpp" -print0 | xargs -0 vim 
:bufdo s/baar/foo/gc 
:wall 
:qall 

gc“全球确认”,墙(写全部),qall(完全全部)。要查看文件列表:ls跳到下一个文件:wn(下一个写入)或:bn(下一个缓冲区)。顺便说一下,xargs在内存中管理大块文件,以传递给vim。