如何在vim中搜索文件目录?
Posted
技术标签:
【中文标题】如何在vim中搜索文件目录?【英文标题】:How to search across a directory of files in vim? 【发布时间】:2011-01-12 13:08:32 【问题描述】:我在 vim 中的一个常见编程任务是:
:s/some pattern/
做一些工作
n #
找到下一个条目
做一些工作
n #
找到下一个条目
...
现在,s/....
只在当前文件中搜索。
有没有办法可以做到这一点,但要在文件的目录中搜索?对以 .cpp 的 .hpp 结尾的 pwd
的子目录中的所有文件说“s/..../”?
谢谢!
【问题讨论】:
这只是一种解决方法,所以我不会将其发布为答案:您可以在一个 vim 会话中打开所有文件,这样您就可以 :n 到下一个,然后录制一个宏这样做 :s/.../ 和 :n 并执行宏足够多的次数。 (过于频繁地运行宏不会造成任何伤害,因为替换只会为最后一个文件一次又一次地尝试) 【参考方案1】:有一个很棒的插件叫ctrlsf.vim,它可以让你在vim中高效地搜索。
这是它的快照。很酷,不是吗?
例如,如果要在当前目录中搜索“hello”之类的单词,安装后只需输入:
:CtrlSF "hello"
那么你会得到你所期望的。
玩得开心!
【讨论】:
【参考方案2】::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 "global confirm", wall (写所有), qall (相当所有)。查看文件列表 :ls top 跳转到下一个文件 :wn (下一个写入)或 :bn (下一个缓冲区)。顺便说一句,xargs 管理内存中的大块文件以毫无错误地传递给 vim。
【讨论】:
【参考方案3】:您可以简单地使用:grep
command:或者更完整的搜索工具集成,使用grep.vim extension。
只需键入:help grep
即可获得有关 Vim 开箱即用功能的良好文档。
使用 :grep foo *.?pp
应该做你想做的事。
这将打开QuickFix list,就像您使用:make
一样,可以跳转到找到的事件。
【讨论】:
不错的答案!安装 grep.vim 后,我们可以使用 :Grep something */*.cpp 或者你可以使用:vimgrep
。以上是关于如何在vim中搜索文件目录?的主要内容,如果未能解决你的问题,请参考以下文章