在vim中,如何查找特定目录下所有文件中变量的所有出现次数?
我知道vimgrep有时可以工作,但它只查找文本,如果其他类具有相同名称的变量并且我只想要特定类别下的变量,则无法使用。
我该怎么做?还是应该使用IDE代替?
在vim中,如何查找特定目录下所有文件中变量的所有出现次数?
我知道vimgrep有时可以工作,但它只查找文本,如果其他类具有相同名称的变量并且我只想要特定类别下的变量,则无法使用。
我该怎么做?还是应该使用IDE代替?
当你已经有一个编辑器的时候,为什么还要使用另一个IDE呢?Vim是一个可配置的IDE,适用于不同的语言。
- 允许搜索代码中:
- 所有符号的引用
- 全局定义
- 被函数调用的函数
- 调用函数的函数
- 文本字符串
- 正则表达式模式
- 一个文件
- 包含一个文件的文件
Cscope的其他特点:
以下是翻译:
- 基于Curses的(文本屏幕)
- 生成信息数据库,以便更快地搜索和日后参考
- 模糊解析器支持C语言,但足够灵活,可以用于C ++和Java,并用作广义的“grep数据库”(使用它浏览大型文本文档!)
- 具有命令行模式,可用于脚本中或作为GUI /前端的后端
- 可在所有Unix版本上运行,以及大多数垄断控制的操作系统。
一旦创建了您的数据库,您就可以浏览变量、函数等的用法。
.vim
文件夹以及它们如何同时使用。 - puk:make
命令,如果有警告或错误,您可以使用:cnext
跳转到该警告/错误。它会显示问题所在,并且甚至会将您带到该行的正确位置。当然,您需要构建一个Makefile,但这并不难制作,尽管可能需要学习。但即使如此,一旦您掌握了,就会很容易。 - Pryftancscope
逐步示例
进入您的项目基本目录,然后运行:
cscope -Rb
这将生成一个cscope.out
文件,其中包含解析信息。即使对于像Linux内核这样的大型项目,生成速度也相当快。
请注意,cscope
不是为除C语言之外的其他语言设计的。有时它可以用于其他类似C语法的语言,如Python,并且您可以通过一些技巧(例如cscope -Rb -s *
和其他一些在Using cscope to browse Python code with VIM?中提到的方法)强制其识别这些文件,但是它不能像处理C语言那样有效地工作。
打开vim并运行:
:cs add cscope.out
:cs find s my_func
s
是符号的助记符。其他提供的 cscope
查询也是可能的。
在 Vim 之外,cscope 接口还具有变量赋值查询(符号出现的子集),而 Vim 似乎没有提供此功能 (?)
这将向快速修复列表添加调用者列表,您可以使用以下命令打开:
:copen
跳转至您感兴趣的行并按回车键。
另请参阅:
cscope -Rb
does not work, you should use cscope -Rb -s *
- mineralscscope -Rb
命令,您应该会看到“cscope:未找到源文件”的消息,cscope.out
文件也不会被创建。相反,请运行cscope -Rb -s *
命令,这样就会创建cscope.out
文件。 - minerals
cscope
的建议对于类 C 语言很好,但对其他语言来说可能不太适用。 - David Pope