2010-01-25 53 views
15

我想快速移动到我的Emacs缓冲区中的一个功能。我想运行一些函数,并得到一个提示,询问函数名称,并为当前缓冲区中定义的每个函数提供完成。在Emacs中,如何在当前文件中的函数之间跳转?

我通常使用etags来浏览,但有时我正在寻找一个框架方法,它已被覆盖在几个文件中。在这些情况下,我可以找到我需要的文件,但是我想快速跳到那里的功能。在TextMate中有一个类似的功能,您可以从编辑器右下角的列表中选择一个定义。

回答

32

只是为了跳过当前文件中的函数?使用imenu。这是目前列出的所有替代品中最简单最轻的一种,可能足以满足您的需求。它也内置在Emacs中,并且具有最小的设置麻烦。它具有图形和文本接口。任何东西额外和你会更好使用其中一个在这里提出的其他优秀建议。

+0

支持哪些语言? C族和Elisp,还有什么? – 2010-01-26 05:35:15

+1

我认为大部分内置模式都可以和imenu一起使用。将imenu支持添加到某个模式也很容易。它适用于Python和Cperl模式。我用过这些。 – 2010-01-26 14:00:12

+1

C#的作品,但请参阅http://stackoverflow.com/questions/2240320 – Cheeso 2010-05-09 11:15:18

0

尝试CEDET。设置第一个有点困难,但这里有一个很好的教程:by Alex ott

而且当他安装完成后,可以使用semantic-complete-jump。按压标签几次,并且它也带来了符号定义。

+0

语义也与Anything很好地结合,并且'anything-c-source-semantic'源给出了一个由语义发现的所有内容的列表。 – haxney 2010-01-25 05:37:28

1

speedbar标准,并为您提供当前目录中每个文件的可折叠菜单,默认情况下,中间点击一个函数定义的条目跳转到该def。随着emacs23这改变了更正常的leftclick。

0

如果M-。提出错误的方法,你可以输入C-u M-。找到下一个具有相同名称的人。

0

到当前文件或一组您选择的文件中导航,做不需要一个标签文件。您可以使用Imenu。但最好使用Icicles imenu命令。

为什么?因为他们让你用完成。子字符串,正则表达式,前缀或模糊完成。结合简单模式进行匹配或减去它们。

命令icicle-imenu冰柱模式C-C =绑定。 Butyou还可以使用命令icicle-imenu-commandicicle-imenu-non-interactive-function查找命令或仅查找非命令函数(非交互式)。

这些命令多命令,这意味着它们实际上浏览器:您可以使用按键C-RETC-鼠标2(直接跳转)和C-降功能定义中跳闸(循环)。点击RET或点击mouse-2定居在最终目的地。

相关问题