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 的快速“在文件中查找”?的主要内容,如果未能解决你的问题,请参考以下文章