2010-01-25 49 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定居在最終目的地。

相關問題