我们有一个庞大、陈旧、可怕的代码库,几乎不可能在您需要的时候找到它。我们正在努力改进它,当然……但我经常发现自己在做大量的递归 grep 来搜索文件的内容以找到使用的地方。
有没有一种工具可以用来在目录中构建文本文件的全文索引,然后从命令行进行查询?
更喜欢可以在用户空间中运行并且不需要守护进程的东西。我们的开发服务器上有很多用户,所以我想要一些可以通过我的代码库实例搜索的东西。
我们有一个庞大、陈旧、可怕的代码库,几乎不可能在您需要的时候找到它。我们正在努力改进它,当然……但我经常发现自己在做大量的递归 grep 来搜索文件的内容以找到使用的地方。
有没有一种工具可以用来在目录中构建文本文件的全文索引,然后从命令行进行查询?
更喜欢可以在用户空间中运行并且不需要守护进程的东西。我们的开发服务器上有很多用户,所以我想要一些可以通过我的代码库实例搜索的东西。
我是“gid”(又名“id-utils”)的忠实粉丝:
用法很简单:
使用您最喜欢的包管理器安装 id-utils(例如“sudo apt-get install”或“yum”)
“cd”到源目录的根目录并运行“mkid”
您可以从命令行使用它
您也可以从“vim”或任何数量的其他工具中使用它。
Russ Cox 撰写了一系列文章来描述 Google 代码搜索算法的工作原理。他在一组命令行工具中重新实现了算法的简化版本,可以在本地代码库上进行快速的正则表达式搜索。
另一种方法是使用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 插件来解决我的需求:
希望能帮助到你。