Vim 除了C/C+;之外,还有其他语言的CScope风格的源浏览器吗+;在窗户上?

Vim 除了C/C+;之外,还有其他语言的CScope风格的源浏览器吗+;在窗户上?,vim,Vim,我特别感兴趣的是可以插入到Vim中的工具,这些工具允许CScope风格的源代码浏览(1-2个击键命令,用于定位函数定义、调用者、全局符号等),用于C/C++以外的语言,如Java和C#(因为Vim和CScope已经很好地集成在浏览C/C++中)。我对基于IDE的工具不感兴趣,因为我知道微软和其他供应商已经解决了这一问题——我更喜欢使用Vim进行编辑和浏览,但不知道有哪种C#和/或Java工具能给我与CScope相同的功能 这个问题的原始答案包括一个指向CSWrapper应用程序的指针,它显然修复

我特别感兴趣的是可以插入到Vim中的工具,这些工具允许CScope风格的源代码浏览(1-2个击键命令,用于定位函数定义、调用者、全局符号等),用于C/C++以外的语言,如Java和C#(因为Vim和CScope已经很好地集成在浏览C/C++中)。我对基于IDE的工具不感兴趣,因为我知道微软和其他供应商已经解决了这一问题——我更喜欢使用Vim进行编辑和浏览,但不知道有哪种C#和/或Java工具能给我与CScope相同的功能


这个问题的原始答案包括一个指向CSWrapper应用程序的指针,它显然修复了一些用户在集成Vim和CScope时遇到的错误。但是,我的Vim/CScope安装工作正常;我只是想扩展功能,允许使用Vim编辑其他语言的代码。

这可能就是您想要的:


您还可以在自己的.vimrc文件中使用各种风格的来模拟一些CScope功能。

CScope确实适用于Java

发件人:

虽然Cscope最初只用于C代码,但它是 实际上是一个非常灵活的工具,它与C++语言一样很好用。 还有Java。您可以将其视为一个通用的“grep”数据库 能够识别某些附加结构,如函数调用 和变量定义。默认情况下,Cscope只解析C、lex和 当前目录中的yacc文件(.c、.h、.l、.y)(和 子目录,如果您传递了-R标志),并且当前没有办法 更改文件扩展名列表(是的,我们应该更改它)。 因此,你必须列出你想要的文件 解析,并将其称为“cscope.files”(您可以任意调用它) 如果调用“cscope-iFooFile”)。一种简单(且非常灵活)的方法 通过可靠的Unix“find”命令执行此操作:

现在运行'cscope-b'来重建数据库(b只是构建 数据库,而无需启动Cscope GUI),您将能够 浏览Java文件中的所有符号。显然有人 使用Cscope浏览和编辑大量的 文档文件,显示了Cscope解析器的灵活性


声称Cscope支持Java是一种极端的延伸。它似乎将方法视为函数,因此它不知道a.foo()、a.foo(Object)和B.foo()都是不同的。对于具有许多相同命名方法的大型代码库(包括第三方库),这是一个大问题。(我还没有看过Cscope的源代码,但这是我在试用Debian最新的Cscope版本15.7a-3.3时发现的。)


我在一个大型Java项目上尝试了Cscope,但由于这个限制,它对我毫无用处。令人遗憾的是,在大型IDE之外使用自由软件,我们无法快速回答“谁调用这种方法”这样的基本问题,但我们还是接受它为好。(如果我错了,我会喜欢的。我求助于黑客,比如注释掉方法并重新编译。)

我同意Andrew的观点-尝试获取方法的调用层次结构会返回相同名称的所有调用,即使它们来自不同的类

您可以使用Eclim将Eclipse插入VIM

哪些支持者称之为层次结构


这里的聚会有点晚了,但我的项目为生成更多语言的cscope数据库提供了一个很好的框架。目前它支持Ruby和Go,Javascript正在开发中。添加Java/C应该没有那么困难


编辑:Javascript现在完全受支持。

对于python:谢谢,我来看看!它在建立数据库方面的速度惊人地慢,对于一个中等规模的项目,我看到什么语言的ETA为5 HRS?对于JavaScript,您可能需要安装更高效的execjs运行时(),例如therubyracer。
find . -name '*.java' > cscope.files