在vim中,如何在某个目录下的文件中查找所有出现的变量?
我知道vimgrep有时可以工作,但是它只查找文本,如果其他类具有相同名称的变量并且我只想要特定类下的变量,则它不起作用。
我该怎么办?或者我应该改为使用IDE吗?
答案 0 :(得分:12)
为什么要在已有的IDE中使用另一个IDE? Vim 是一个可配置且可用于不同语言的IDE。
您可以使用cscope
代码build a database。这个数据库
- 允许搜索以下代码:
- 所有对符号的引用
- 全球定义
- 函数调用的函数
- 调用函数的函数
- 文字字符串
- 正则表达式
- 文件
- 包含文件的文件
Cscope的其他功能:
- 基于Curses(文本屏幕)
- 生成信息数据库以便更快地搜索并稍后参考
- 模糊解析器支持C,但足够灵活,可用于C ++和Java,并用作通用的“grep数据库”(用它来浏览大型文本文档!)
- 具有包含在脚本中的命令行模式或作为GUI /前端的后端
- 运行所有Unix版本,加上大多数垄断控制的操作系统。
创建数据库后,您可以browse through使用变量,函数等。
编辑(稍微OT):
在代码上使用Vim时非常方便的另一个很酷的事情是使用taglist的Ctags插件:
“Tag List”插件是Vim和的源代码浏览器插件 提供了源代码文件结构的概述并允许 您可以有效地浏览不同的源代码文件 编程语言。
答案 1 :(得分:5)
cscope
分步示例
转到项目的基本目录,然后运行:
cscope -Rb
这将生成一个cscope.out
文件,其中包含已解析的信息。生成速度相当快,即使对于像Linux内核这样的大型项目也是如此。
打开vim,然后运行:
:cs add cscope.out
:cs find s my_func
s
是symbol
的助记符。其他cscope
提供的查询也是可能的。
cscope接口(ouside Vim)还有一个变量赋值查询(符号出现的子集),Vim似乎没有提供(?)
这会将一个调用者列表添加到quickfix列表中,您可以使用以下命令打开该列表:
:copen
转到您感兴趣的行并按Enter键跳转到那里。
另见: