关于vim:除了Windows上的C / C以外,是否还有其他语言的CScope风格源浏览器?

关于vim:除了Windows上的C / C以外,是否还有其他语言的CScope风格源浏览器?

Are there CScope-style source browsers for other languages besides C/C++ on Windows?

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

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


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

我在一个大型Java项目上尝试了Cscope,由于这个限制,它对我根本没有用。令人遗憾的是,我们无法在大型IDE之外使用免费软件来快速回答诸如"谁调用此方法"之类的基本问题,但我们还是可以接受。 (如果我错了,我会喜欢的。我诉诸于黑客,例如注释掉方法并重新编译。)


CScope确实适用于Java。

来自http://cscope.sourceforge.net/cscope_vim_tutorial.html:

Although Cscope was originally intended only for use with C code, it's
actually a very flexible tool that works well with languages like C++
and Java. You can think of it as a generic 'grep' database, with the
ability to recognize certain additional constructs like function calls
and variable definitions. By default Cscope only parses C, lex, and
yacc files (.c, .h, .l, .y) in the current directory (and
subdirectories, if you pass the -R flag), and there's currently no way
to change that list of file extensions (yes, we ought to change that).
So instead you have to make a list of the files that you want to
parse, and call it 'cscope.files' (you can call it anything you want
if you invoke 'cscope -i foofile'). An easy (and very flexible) way to
do this is via the trusty Unix 'find' command:

1
find . -name '*.java' > cscope.files

Now run 'cscope -b' to rebuild the database (the -b just builds the
database without launching the Cscope GUI), and you'll be able to
browse all the symbols in your Java files. Apparently there are folks
out there using Cscope to browse and edit large volumes of
documentation files, which shows how flexible Cscope's parser is.


这里的聚会有点晚,但是我的https://github.com/eapache/starscope/项目提供了一个不错的框架,可以为更多语言生成cscope数据库。当前,它支持Ruby和Go,并且Javascript正在开发中。添加Java / C#并不难。

编辑:现已完全支持Javascript。


我同意安德鲁的看法-尝试获取方法的调用层次结构会返回所有具有相同名称的调用,即使它们来自不同的类也是如此。

您可以使用Eclim将Eclipse插入VIM

http://eclim.org/

支持者称其为等级

http://eclim.org/vim/java/inspection.html#call-hierarchy


这可能是您要查找的内容:

http://www.vim.org/scripts/script.php?script_id=1783

您还可以使用各种样式的map模仿自己的.vimrc文件中的某些CScope功能。


推荐阅读