怎样跳转到函数或变量的定义位置、整个工程中使用位置?

在函数名或变量名处用 * 可高亮出函数名/变量名在当前文件中的位置,然后 n向前跳转,N向后搜索。 我在写小段代码时是这么用的。

但是当工程越来越大,变量/函数的定义可能出现在其他文件中,定义的一个量可能在多个文件中使用,不知道Emacs/Spacemacs中是如何实现方便跳转的?

1 个赞

定义跳转在 Spacemacs 中通用快捷键是 g d ,比较复杂的跳转要看你用什么语言了,不同的语言有不同的配置。

我试了一下,g d 好像只能在当前文件进行搜索。 当光标在一个变量XX上,按 g d 实际上是转化成了:/\_<XX\_> 进行搜索。 不知道不同文件之间是怎么跳转的?

要知道你用什么语言啊,不用语言有不同解决方案的。。。

C#,Python,C++。前两个用得最多

搜到好多相关的: Imenu、Icicles imenu、CEDET、global gtags真不知道哪个效果好?:innocent:

1 个赞

如果你用的是 Spacemacs ,那配置好了 python layer 应该就可以在 python 中跳转了。

Spacemacs 提供了 cscope 和 gtags layer ,都可以为 c++ 提供跳转。

C# 没用过,并不熟。。。

1 个赞

好的,确实也应该用用layer。 之前C#装了csharp-mode, Python装了anaconda-mode、elpy。

Python layer 就是用 anaconda-mode 进行定义跳转的。

但是我用g d没有实现跨文件跳转啊,莫非不是这么用的? 回头我看看anaconda-mode。

python layer 应该是进行了配置的。

查了下 anaconda-mode 默认按键是

Keybinding Description C-M-i anaconda-mode-complete M-. anaconda-mode-find-definitions M-, anaconda-mode-find-assignments M-r anaconda-mode-find-references M-* anaconda-mode-go-back M-? anaconda-mode-show-doc

我不在自己装package了,直接用python layer,一切看起来是那么美好。 不过C#还没那么好用