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