【问题标题】:How can I jump to function when doing C development in Emacs?在 Emacs 中进行 C 开发时如何跳转到函数?
【发布时间】:2011-02-09 12:23:00
【问题描述】:

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

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

【问题讨论】:

    标签: c function emacs keyboard-shortcuts


    【解决方案1】:

    您必须创建一个标签文件。
    在 Unix 下,你有一个 etags 程序,它可以理解 CC++Java... 的语法,并创建一个 Emacs 可以使用的 tag 文件。

    这倒是old page (2004) 提供了更多信息。

    要跳转到函数,请使用 M-。 (即 Meta-Period)并输入函数的名称。如果你 只需按回车 Emacs 将跳转到与下面的单词匹配的函数声明 光标。

    【讨论】:

    • 不,它不是跳转到声明,而是跳转到实现。
    【解决方案2】:

    有几个“标签”系统可以做到这一点(有一个与 emacs 捆绑在一起,还有一个 GNU global,它没有与 emacs 捆绑,但与它很好地集成并具有一些优势)。与 Eclipse 相比,您需要构建标签文件。

    然后是语义/EDE,它现在与 emacs 捆绑在一起,它应该提供解决方案,而无需显式构建数据库。我最近没有尝试使用它。当我这样做时,它有性能问题,我发现设置很痛苦。 (这可能是因为我正在处理一个大的——几千万行——而且旧的——有些事情可以追溯到 80 年代中期——项目没有重组的可能性)。

    【讨论】:

    • 哇,这应该是 Emacs 的地方。我喜欢 Emacs 让我们编写代码的方式。非常有趣... :)
    【解决方案3】:

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

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

    任何人成功使用语义模式???

    谢谢

    【讨论】:

    • 使用本地符号失败,但仍然有用。
    【解决方案4】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多