如何在整个项目/文件夹中recursionsearch一个单词?

假设我正在search文件夹内的JFactory类,它是子目录。

我怎样才能存档包含class JFactory

我不想replace这个词,但我需要find包含class JFactory

 :vimgrep /JFactory/ **/*.java 

你可以用/\<JFactory\>/replace模式/JFactory/ /\<JFactory\>/如果你想要全字匹配。 :vim简写为:vimgrep

如果JFactory\<JFactory\>是您当前的search模式(例如您在一次出现*时),则可以使用空search模式:vimgrep // **/*.java ,它将使用最后的search模式。 便利!

警告:如果启用, :vimgrep会触发:vimgrep 。 这可能会减慢search速度。 如果你不想要,你可以这样做:

 :noautocmd vimgrep /\<JFactory\>/ **/*.java 

这会更快。 但是:它不会触发语法突出显示或打开gz文件未压缩等。

请注意,如果你想要一个外部程序来grep你的模式,你可以做如下的事情:

 :set grepprg=ack :grep --java JFactory 

Ack是Perl写的grep替代品。 请注意,那么你将不得不切换到Perl的正则expression式。

一旦您select的命令返回,您可以使用Vim文档中描述的命令浏览search结果:help quickfix 。 查找:cfirst:cnext:cprevious:cnfile

2014年更新:现在有新的方法可以通过the_silver_searcherthe_platinum_searcher以及ag.vimunite.vim插件来实现。

从项目根文件夹中运行以下命令:

 grep -H -r 'what_you_search' * | less 

你将得到一个文件夹列表和与该string匹配的行。

看一下ctags和cscope ,它们可以让你跳到类和函数定义,并find这些函数/类在哪里使用。

这个脚本可能有助于: Filesearch 。

Silver Searcher( https://github.com/ggreer/the_silver_searcher )强烈推荐,非常快!

安装

 sudo pacman -S the_silver_searcher // arch linux sudo apt install silversearcher-ag // ubuntu 

用法

 $ ag keywords 

与vim集成

rking / ag.vim( https://github.com/rking/ag.vim

安装后

 :Ag keywords 

通过以下方式打开命令行窗口:

Esc – 确保您处于正常模式

键入q,键入:

命令行应该打开(它就像一个tmp文件来写你可以导航的命令,你可以在任何vim文件中正常导航…

键入i进入插入模式

这个例子将search当前目录下的to_srchstring,用于' .js'和' .java'types的所有文件types,但忽略包含stringnode_modules的所有文件path

 :g/console.log/ | :vimgrep /console.log/ `find . -type f -name '*.js' -o -name '*.java' -not -path '*node_modules/*'` 

现在,您可以:通过查找结果使用箭头键导航

你也可以在.vimrc中设置

  " how-to search recursively under the current dir for the files of type js and java but omit the " node_modules file paths ":g/console.log/ | :vimgrep /console.log/ `find . -type f -name '*.js' -o -name '*.java' -not -path '*node_modules/*'` " reminder open the quick fix window by :copen 20 " reminder close the quick fix window by :ccl 

你可以省略第一个:q / to_srch /我使用它来自动突出显示search结果,因为我在〜/ .vimrc中设置了hlsearch

任何提示如何自动启用从vimgrep或在vimrc的srch结果将高度赞赏…