在Emacs中进行C开发时如何跳转到功能?

时间:2011-02-09 12:23:01

标签: c function emacs keyboard-shortcuts

我在Emacs中进行C开发。如果我打开了具有多个功能的源文件,并且“标记”处于函数调用,例如int n = get_number(arg);有什么方法可以“跳转”到该函数的实现?例如到int get_number(int *arg) { ... }

我在Eclipse中做了一些Java开发并且缺少这个功能,因为我不习惯Emacs,但我想学习。

4 个答案:

答案 0 :(得分:10)

您必须创建标记文件 在Unix下,您拥有etags程序,该程序了解CC++Java的语法...并创建一个tag文件,该文件可以是由Emacs使用。

这相当old page(2004)提供了更多信息。

  

要跳转到某个功能,请使用M-。 (那是Meta-Period)并输入函数的名称。如果你   只需按Enter键Emacs将跳转到与下面的单词匹配的函数声明   光标。

答案 1 :(得分:3)

有几个“标签”系统允许(有一个捆绑了emacs,有GNU全球,没有与emacs捆绑,但与它很好地集成,并具有一些优势)。与Eclipse相比,您需要构建标记文件。

然后有语义/ EDE现在捆绑了emacs,它应该提供一个解决方案,而不需要显式地构建数据库。我最近没试过用它。当我这样做时,它有性能问题,我发现设置很痛苦。 (这可能是因为我正在努力开发一个大型的 - 几百万行 - 而且旧的 - 有些东西可以追溯到80年代中期 - 项目没有重组的可能性。)

答案 2 :(得分:3)

我认为语义模式应该会给你相同的结果。虽然我没有尝试跳转到另一个文件,但在一个文件中它非常优秀。转到变量,发出击键 C-c j ,它会跳转到变量的定义。使用 C-u C-space 返回上一行。要显示对符号的引用,请使用击键 C-c g

这对我很有帮助。 我没有尝试过它跳转到另一个文件,因为我当前的项目是一个修改过的Java程序,我们使用预处理程序(非标准的java进程)。所以我认为这就是问题所在。

任何语义模式的成功???

感谢

答案 3 :(得分:0)

我真的很喜欢cscope,但etags可能也可以。