【发布时间】:2010-01-25 04:34:09
【问题描述】:
我想快速将点移动到我的 Emacs 缓冲区中的一个函数。我想运行一些函数并得到一个提示,询问我函数名称,并为当前缓冲区中定义的每个函数提供完成。
我通常使用 etags 进行导航,但有时我正在寻找一种已在多个文件中被覆盖的框架方法。在这些情况下,我可以找到我需要的文件,但我想快速跳转到那里的函数。 TextMate 中有一个类似的功能,您可以从编辑器右下角的列表中选择定义。
【问题讨论】:
标签: emacs
我想快速将点移动到我的 Emacs 缓冲区中的一个函数。我想运行一些函数并得到一个提示,询问我函数名称,并为当前缓冲区中定义的每个函数提供完成。
我通常使用 etags 进行导航,但有时我正在寻找一种已在多个文件中被覆盖的框架方法。在这些情况下,我可以找到我需要的文件,但我想快速跳转到那里的函数。 TextMate 中有一个类似的功能,您可以从编辑器右下角的列表中选择定义。
【问题讨论】:
标签: emacs
只是为了跳转当前文件中的函数?使用imenu。它是迄今为止列出的所有替代方案中最简单和最轻的,可能足以满足您的需求。它还内置在 Emacs 中,并且设置麻烦最少。它具有图形和文本界面。任何额外的,您最好使用此处提出的其他优秀建议之一。
【讨论】:
speedbar 是标准的,它为当前目录中的每个文件提供了一个可折叠菜单,默认情况下,中间单击函数定义的条目会跳转到该定义。在 emacs23 中,这被更改为更正常的左键。
【讨论】:
您可以使用etags-select 从多个匹配标签中进行选择。但你问的答案是imenu。
【讨论】:
Icicles 可能更接近您正在寻找的内容:
http://www.emacswiki.org/emacs/Icicles_-_Tags_Enhancements
这是对 etags 的增强,并且包括(除其他外)带有标签的文件名,因此您可以判断它是否是您要查找的文件。
【讨论】:
试试 CEDET。设置第一个有点困难,但这里有一个很好的教程:by Alex ott
当他安装好后,你可以使用semantic-complete-jump。按下标签几次,它也带来了符号定义。
【讨论】:
anything-c-source-semantic 源提供了通过语义找到的所有内容的列表。
如果 M-。调错方法,可以输入C-u M-。找到下一个同名的。
【讨论】:
global gtags 很不错
【讨论】:
要在当前文件或您选择的一组文件中导航,您确实需要 TAGS 文件。您可以使用 Imenu。但最好使用Icicles imenu 命令。
为什么?因为他们让你使用completion。子字符串、正则表达式、前缀或模糊完成。组合简单的模式以匹配或减去它们。
命令icicle-imenu 在Icicle 模式下绑定到C-c =。但是您也可以使用命令icicle-imenu-command 或icicle-imenu-non-interactive-function 仅查找命令 或非命令 函数(非交互式)。
这些命令是多命令,这意味着它们实际上是浏览器:您可以使用键 C-RET 或 C-mouse- 在函数定义之间跳转2(直接跳转)和C-down(循环)。点击 RET 或点击 mouse-2 以在最终目的地安顿下来。
【讨论】:
我使用C-M-a 和C-M-e 在函数的开头和结尾之间跳转。
否则,打开Speedbar 并单击文件名旁边的+ 图标以查看文件中包含的函数列表。然后点击函数名直接跳转。
【讨论】: