Vim、Java:打开光标所在的类并跳转到方法

3

Vim可以使用gf命令打开光标下的文件。例如,如果我的光标下有以下内容:

SensorManagementActivity.java

按下 gf 将打开 SensorManagementActivity.java 文件。

问题在于,在 Java 中,引用缺少 java 后缀,并经常出现为 SomeClassSomeClass()SomeClass.method()

  • 当光标位于另一个文件中的 SomeClass.someMethod() 上时,如何打开 SomeClass.java 并跳转到 someMethod()
  • 是否有一种方法可以在不保存当前文件的情况下打开一个新文件,并在不丢失更改的情况下返回当前文件?
1个回答

6
< p > 'suffixesadd' 选项允许 gf 处理 Java 文件扩展名;它已经由 Vim 预装的 java 文件类型设置好了,如下所示:

:setlocal suffixesadd=.java

为了跳转到方法,Vim可以使用一个tags文件,这个文件必须先被(重新)生成(有些插件可以自动化此过程)。对于Java语言,你可以使用exuberant ctags工具。
:! ctags -R

想了解更多信息和替代方案,请阅读:help ctags。使用:tag命令或Ctrl-]快捷键进行跳转。

您可以通过Ctrl-W ]跳转到拆分窗口。为了能够离开修改后的文件并以后返回它,请在您的~/.vimrc中设置:set hidden

附注:虽然它们在这里有点相关,但最好避免在Stack Overflow上问多个问题


非常感谢您的回答。对我来说,:! ctags -R还不起作用 - 正在尝试找到解决方法。 - Adam Matan
你可能需要安装ctags,它不包含在Vim中。另外,非exuberant普通版本无法理解Java。你也可以直接从控制台调用它;成功运行后,当前目录中应该有一个名为“tags”的文件。 - Ingo Karkat
-R 仅用于递归处理子目录,这是有帮助但不是必需的。但我还没有遇到过没有此选项的丰富的 ctags,也许您只安装了普通的ctags。检查 ctags --help 的输出,并在必要时安装 exuberant ctags(当前版本为5.9)。 - Ingo Karkat

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接