假设我正在搜索JFactory文件夹内的一个类,它是子目录.
如何归档包含class JFactory哪个文件?
我不想替换那个词,但我需要找到包含的文件class JFactory.
Ben*_*oit 76
:vimgrep /JFactory/ **/*.java
Run Code Online (Sandbox Code Playgroud)
您可以替换模式/JFactory/与/\<JFactory\>/如果你想全字匹配.:vim是简写:vimgrep.
如果JFactory或者\<JFactory\>是您当前的搜索模式(例如你打*一个发生),你可以使用空搜索模式::vimgrep // **/*.java,它会使用最近的搜索模式来代替.便利!
警告::vimgrep 如果启用,将触发autocmds.这可能会减慢搜索速度.如果你不希望你能做到:
:noautocmd vimgrep /\<JFactory\>/ **/*.java
Run Code Online (Sandbox Code Playgroud)
这会更快.但是:它不会触发语法高亮或打开未gz压缩的文件等.
请注意,如果您希望外部程序grep您的模式,您可以执行以下操作:
:set grepprg=ack
:grep --java JFactory
Run Code Online (Sandbox Code Playgroud)
Ack是一个Perl编写的grep替代品.请注意,您必须切换到Perl正则表达式.
一旦您选择的命令返回,您可以使用Vim文档中描述的那些命令浏览搜索结果:help quickfix.查找:cfirst,:cnext,:cprevious,:cnfile,等.
2014更新:现在有新的方式来做到这一点与the_silver_searcher或者the_platinum_searcher,要么ag.vim或unite.vim插件.
Kar*_*mid 16
从项目根文件夹中,运行以下命令:
grep -H -r 'what_you_search' * | less
Run Code Online (Sandbox Code Playgroud)
您将获得一个文件夹列表和与该字符串匹配的行.
Silver Searcher(https://github.com/ggreer/the_silver_searcher)强烈推荐,非常快!
安装
sudo pacman -S the_silver_searcher // arch linux
sudo apt install silversearcher-ag // ubuntu
Run Code Online (Sandbox Code Playgroud)
用法
$ ag keywords
Run Code Online (Sandbox Code Playgroud)
与vim集成
rking/ag.vim(https://github.com/rking/ag.vim)
安装后
:Ag keywords
Run Code Online (Sandbox Code Playgroud)