如何在Vim中找到所有出现的变量?

时间:2012-03-08 10:28:39

标签: vim

在vim中,如何在某个目录下的文件中查找所有出现的变量?

我知道vimgrep有时可以工作,但是它只查找文本,如果其他类具有相同名称的变量并且我只想要特定类下的变量,则它不起作用。

我该怎么办?或者我应该改为使用IDE吗?

2 个答案:

答案 0 :(得分:12)

为什么要在已有的IDE中使用另一个IDE? Vim 一个可配置且可用于不同语言的IDE。

您可以使用cscope代码build a database。这个数据库

  
      
  • 允许搜索以下代码:      
        
    • 所有对符号的引用
    •   
    • 全球定义
    •   
    • 函数调用的函数
    •   
    • 调用函数的函数
    •   
    • 文字字符串
    •   
    • 正则表达式
    •   
    • 文件
    •   
    • 包含文件的文件
    •   
  •   

Cscope的其他功能:

  
      
  • 基于Curses(文本屏幕)
  •   
  • 生成信息数据库以便更快地搜索并稍后参考
  •   
  • 模糊解析器支持C,但足够灵活,可用于C ++和Java,并用作通用的“grep数据库”(用它来浏览大型文本文档!)
  •   
  • 具有包含在脚本中的命令行模式或作为GUI /前端的后端
  •   
  • 运行所有Unix版本,加上大多数垄断控制的操作系统。
  •   

创建数据库后,您可以browse through使用变量,函数等。


编辑(稍微OT):
在代码上使用Vim时非常方便的另一个很酷的事情是使用taglistCtags插件:

  

“Tag List”插件是Vim和的源代码浏览器插件   提供了源代码文件结构的概述并允许   您可以有效地浏览不同的源代码文件   编程语言。

答案 1 :(得分:5)

cscope分步示例

转到项目的基本目录,然后运行:

cscope -Rb

这将生成一个cscope.out文件,其中包含已解析的信息。生成速度相当快,即使对于像Linux内核这样的大型项目也是如此。

打开vim,然后运行:

:cs add cscope.out
:cs find s my_func

ssymbol的助记符。其他cscope提供的查询也是可能的。

cscope接口(ouside Vim)还有一个变量赋值查询(符号出现的子集),Vim似乎没有提供(?)

这会将一个调用者列表添加到quickfix列表中,您可以使用以下命令打开该列表:

:copen

转到您感兴趣的行并按Enter键跳转到那里。

另见: