我想快速移动指向我的Emacs缓冲区中的函数。我想运行一些函数并得到一个提示,询问我的函数名称,并为当前缓冲区中定义的每个函数提供完成。
我通常使用etags来导航,但有时候我正在寻找一个在多个文件中被覆盖的框架方法。在这些情况下,我可以找到我需要的文件但是我想快速跳转到那里的功能。 TextMate中有一个类似的功能,您可以从编辑器右下角的列表中选择一个定义。
答案 0 :(得分:35)
只是跳转当前文件中的函数?使用imenu。它是目前为止列出的所有替代品中最简单,最轻的,可能足以满足您的需求。它也内置于Emacs中,并且具有最小的设置麻烦。它具有图形和文本界面。任何额外,你最好使用这里提出的其他一些优秀建议。
答案 1 :(得分:2)
您可以使用etags-select从多个匹配的代码中进行选择。但你问的答案是imenu。
答案 2 :(得分:1)
speedbar是标准配置,为您提供当前目录中每个文件的可折叠菜单,默认情况下,中间单击某个功能定义的条目会跳转到该def。使用emacs23,这被改为更正常的leftclick。
答案 3 :(得分:0)
冰柱可能更接近你想要的东西:
http://www.emacswiki.org/emacs/Icicles_-_Tags_Enhancements
这是对etags的增强,包括(除其他外)带有标记的文件名,因此您可以判断它是否是您要查找的文件名。
答案 4 :(得分:0)
尝试CEDET。设置第一个有点困难,但这是一个很好的教程:by Alex ott
安装完成后,您可以使用semantic-complete-jump
。按Tab键几次,它也会带来符号定义。
答案 5 :(得分:0)
如果M-。提出错误的方法,你可以输入C-u M-。找到下一个同名的。
答案 6 :(得分:0)
全球gtags非常好
答案 7 :(得分:0)
要在当前文件或您选择的一组文件中导航,您不需要TAGS文件。您可以使用 Imenu 。但最好使用Icicles imenu命令。
为什么呢?因为它们允许您使用完成。子串,正则表达式,前缀或模糊完成。组合简单模式以匹配或减去它们。
命令icicle-imenu
在 Icicle 模式下绑定到 C-c = 。但您也可以使用命令icicle-imenu-command
或icicle-imenu-non-interactive-function
查找命令或仅查找非命令功能(非交互式)。< / p>
这些命令是多命令,这意味着它们实际上是浏览器:您可以使用键 C-RET 或 C-mouse-在函数定义中跳闸2 (直接跳转)和 C-down (循环)。点击 RET 或点击 mouse-2 在最终目的地安顿下来。