我们有一个巨大的,古老的,可怕的代码库,这使得当你需要它时几乎不可能找到东西。我们正在努力改进它,当然......但我经常发现自己正在做大量的递归greps来搜索文件的内容以找到使用的地方。命令行全文索引?
是否有一个工具可以用来在目录中建立文本文件的全文索引,然后从命令行中查询该文件?
首选可以在用户空间运行并且不需要守护进程的东西。我们的开发服务器上有很多用户,所以我想要通过我的代码库实例进行搜索。
我们有一个巨大的,古老的,可怕的代码库,这使得当你需要它时几乎不可能找到东西。我们正在努力改进它,当然......但我经常发现自己正在做大量的递归greps来搜索文件的内容以找到使用的地方。命令行全文索引?
是否有一个工具可以用来在目录中建立文本文件的全文索引,然后从命令行中查询该文件?
首选可以在用户空间运行并且不需要守护进程的东西。我们的开发服务器上有很多用户,所以我想要通过我的代码库实例进行搜索。
我 “GID”(又名 “ID-utils的”)的大风扇:
用法很简单:
安装ID-使用你最喜欢的包管理器(例如“sudo apt-get install”或“yum”)
“CD”的源目录并运行的根“MKID”
您可以通过命令行
你也可以用它从“VIM”或任意数量的其他工具使用。
PS:“ctags”是另一件好事,看看:http://ctags.sourceforge.net/,http://www.thegeekstuff.com/2009/04/ctags-taglist-vi -vim编辑器,AS-sourece代码浏览器/ – paulsm4 2012-08-05 05:32:20
Russ Cox写道a series of articles describing how the Google Code Search algorithm worked。他在a set of command-line tools that can do fast regex searches over a local codebase中重新实现了该算法的简化版本。
另一种方法是使用类似ctags的东西来创建代码中使用的标识符的索引。许多编辑器(包括我使用的Vim)都可以使用这个标签文件来快速跳转到标识符的定义。
cd /path/to/project
ctags -R
这将创建一个tags
文件Vim会使用,则:
vim -t someFunctionName
将在函数定义打开VIM!
还有一些让生活更简单的键盘快捷键。
CRTL+] will jump to the definition of the method under the cursor
CRTL+t will go back
我有一个类似的需要在一个大的C++项目上工作。在调查了一些工具之后,我发现id-utils是最好的选择,因为它在构建索引和搜索模式方面确实很快。
根据ID-utils的,我做了一个命令行工具和VIM插件来解决我的需求:
希望它能帮助。
任何特定的语言或环境? – 2012-08-05 05:18:22
你有没有试过['ack'](http://betterthangrep.com)?我通常发现速度够快,不需要全文索引,即使在真正的大型项目上也是如此。 – 2012-08-05 05:24:01
@GregHewgill宇,看起来很有趣。不错的域名太:) – 2012-08-05 05:28:27