VIM 的快速“在文件中查找”?

Posted

技术标签:

【中文标题】VIM 的快速“在文件中查找”?【英文标题】:Fast 'Find in Files' for VIM? 【发布时间】:2010-11-08 21:08:29 【问题描述】:

有哪些选项可以在 VIM 中快速“在文件中查找”搜索?

我们的代码库足够大,搜索需要使用索引。 grep/vimgrep/etc 太慢了。

索引不需要特别快;我可以在一夜之间建立索引。

谢谢,

[编辑] 我也在 Windows 环境中工作。

【问题讨论】:

【参考方案1】:

如果是源代码(而不是全文搜索),那么带有 TagList 插件的 ctags 应该可以很好地满足您的需求。参见,例如:

http://www.thegeekstuff.com/2009/04/ctags-taglist-vi-vim-editor-as-sourece-code-browser/

编辑:TagList 和 ctags 也可以在 Windows 上工作(这就是我使用的)。请参阅 TagList 安装页面和常见问题解答。以下链接可能有用:

http://www.vim.org/scripts/script.php?script_id=273 http://vim-taglist.sourceforge.net/installation.html http://vim-taglist.sourceforge.net/faq.html

还有一个 TagList 论坛,您可以在其中获得更多帮助:

http://tech.groups.yahoo.com/group/taglist/

我不久前在我的 Windows 机器上设置了它,但我不记得遇到任何问题。

【讨论】:

【参考方案2】:

我使用的东西,但不是通过 vim,是 ack:http://betterthangrep.com/

它是一个基于 perl 的工具,应该可以在 Windows 中使用。

【讨论】:

这对我来说效果很好。我们有数千个文件,一个普通的 grep(甚至 ack)可能需要几十秒。但是像:Ack --ruby *something* 这样的东西通常会在一两秒内返回,因为它只搜索文件的一个子集【参考方案3】:

如果您正在使用大型代码库,那么可能是时候寻找比传统工具更强大的解决方案了。 OpenGrok 是一个非常快速的源代码搜索和交叉引用引擎。除了出色的性能之外,它还集成了Subversion、Mercurial 和ClearCase 以及其他源版本控制软件。这听起来很像你可以使用的东西。

如果您希望支持在 Vim 中使用 OpenGrok,您可以轻松编写一个调用 system() 的 vim 函数来开始搜索。要了解有关编写新 vim 命令的更多信息,请在 vim 中查找 :help 40.2

我希望这就是你要找的。​​p>

【讨论】:

【参考方案4】:

我不知道我是怎么找到这个的,但看起来有人为google desktop写了一个插件

【讨论】:

【参考方案5】:

尝试安装https://github.com/mileszs/ack.vim,http://beyondgrep.com/,

然后做一个链接

ln -s /usr/bin/ack-grep /usr/bin/ack 

并添加

noremap <C-f> :copen<CR>:Ack -aQi --ignore-dir someignoringdir

到你的.vimrc,你可以通过Ctrl+F在文件中找到后,享受

_   /|
\'o.O'
=(___)=
   U  

【讨论】:

不确定这是否会比内置 grep 或 vimgrep 更快。【参考方案6】:

你可以试试这个

:vimgrep /something/ */

之后别忘了打开搜索结果窗口

:cw

【讨论】:

以上是关于VIM 的快速“在文件中查找”?的主要内容,如果未能解决你的问题,请参考以下文章

Linux中vim的基本操作

vi/vim的快捷操作

linux基本命令vim

Vim快速查找

在VIM中进行快速的查找和替换

idea中常用的快捷键汇总