Vim在文件夹中搜索文本

Jus*_*Mad 11 vim vim-plugin

有没有办法搜索文件夹中的某些文本,并在Vim中的单独缓冲区中显示搜索结果?(与Sublime Text Ctrl + Shift + F结果一样)

rom*_*inl 24

不,你不需要任何插件.您只需要默认:vimgrep(或:vim).

foo在当前目录中的每个文件中搜索:

:vim foo * | cw
Run Code Online (Sandbox Code Playgroud)

foo在当前目录中的每个JavaScript文件中搜索:

:vim foo *.js | cw
Run Code Online (Sandbox Code Playgroud)

foo递归方式搜索当前目录中的每个JavaScript文件:

:vim foo **/*.js | cw
Run Code Online (Sandbox Code Playgroud)

在当前目录中的每个文件中搜索当前单词:

:vim <C-r><C-w> * | cw
:vim <cword> * | cw
Run Code Online (Sandbox Code Playgroud)

(编辑::cw[indow]代替使用:copen)

  • 不要忘记:lvimgrep(带有`:lopen`,`:lrewind`,`:lnext`,`:lprev`,甚至`:lolder`,`:lnewer` - 这些都非常棒,赢了' t干扰您的常规quickfix周期 (2认同)

K Z*_*K Z 9

听起来像你需要ack.vim:

这个插件是Perl模块App :: Ack的前端.Ack可以替代99%的grep用途.此插件允许您从vim运行ack,并在拆分窗口中显示结果.

用法:

:Ack [options] {pattern} [{directory}]
Search recursively in {directory} (which defaults to the current directory) for the {pattern}.
Run Code Online (Sandbox Code Playgroud)

包含搜索词的文件将在拆分窗口中列出,并且每次出现一次.在此窗口的一行上的[Enter]将打开文件,并将光标放在匹配的行上.


Ing*_*kat 5

:grepVim命令委托搜索到外部grep工具(或兼容的替代等ack,通过设置'grepprg').或者,您可以使用:vimgrep,在Vim内执行搜索.这允许使用相同的Vim样式的正则表达式和glob模式(如**/),但它通常较慢,因为每个文件都被读入Vim缓冲区.

这两个命令都会在quickfix窗口中显示结果,您可以从中导航到匹配项.

您不需要任何插件,尽管有几个可用尝试使处理更简单或支持不同的搜索命令(例如已经提到的ack.vim).