如何在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中搜索文件目录?的主要内容,如果未能解决你的问题,请参考以下文章

vim左边显示目录

在 Vim 中,文件名的制表符补全不起作用

2018.03.13Linux基本指令+Vim编辑器+重定向+正则表达式

如何安装jedi vim插件

vim入门

vim入门