題 Emacs:顯示源文件中子例程/函數/類的列表


多年來我一直在使用一個名為“FTE”(或eFTE)的鮮為人知的編輯器;它有一個很好的實用程序,可以在源文本文件(C,C ++,Fortran,...中顯示子例程/函數/類的列表(或任何此類事物 - 取決於您在其配置文件中定義的正則表達式))你有什麼)。此功能允許我在源文件中從一個點快速跳轉到另一個點。也許FTE最初的捷徑是 ^I (控制+ I)。 emacs是否具有類似的功能? Emacs比FTE先進得多,如果沒有人開發過這樣的設施,我會感到驚訝。

謝謝, Wirawan


3
2017-08-07 14:04


起源


我沒有使用emacs,但我認為你可能正在尋找某種方式 ctags 積分。 - grawity


答案:


嘗試 M-x occur RET exp RET  - 這將在新緩衝區中列出所有出現的內容 exp 在當前緩衝區中。


6
2017-08-07 18:11



我是如何使用Emacs超過兩年而未發現的呢?如果我能不止一次地回答你的答案,我會的。 - Aaron Miller
@AaronMiller歡迎來到秘密森林隱藏非常有用但鮮為人知的Emacs功能精靈:-)另一個(相關)非常有用的功能是 re-builder,它允許您以交互方式逐步構建正則表達式,突出顯示調用它的緩衝區中的所有匹配項。請享用 :-) - ack


大多數人當然會告訴你只使用現代 IDE 但他們不明白的力量 emacs。就個人而言,我用 歐洲央行 這讓我的 emacs 看起來像這樣:

enter image description here

左側的中間窗口是當前源文件的功能列表。中間單擊名稱會將光標移動到該功能的定義。

要安裝,請按照ECB網站上的說明安裝ECB,然後將此行添加到您的 ~/.emacs (相應地改變位置):

(add-to-list 'load-path
             "~/.emacs-lisp/ecb/")

另一種選擇是 CEDET 但我還沒用過它。


4
2017-08-07 14:36



我以前見過歐洲央行,但總是迴避,因為它看起來非常重量級。你是怎麼找到它的? - Aaron Miller
@AaronMiller老實說,我愛上了它。我終於用朋友閉嘴了。它有點重量級,但我在必要時用快捷方式打開它,大約需要一秒鐘,也許兩個,不多(在我3歲的筆記本電腦上)。我很高興,雖然我似乎記得安裝並非沒有痛苦。我建議你嘗試一下,如果它太重,不要使用它。請注意ecb很舊(最後版本~2009)所以CEDET可能是更好的選擇。 - terdon
謝謝!我會嘗試它和CEDET兩者(我收集24.3內置了CEDET 2),尤其是因為我發現你對Eclipse引人注目的觀點。 :) - Aaron Miller


Emacs有兩種方法可以獲得此功能。

較輕的方法是通過 標籤,具有適當的定制可以用於大多數目的。一旦你構建了一個標籤文件(在shell中完成,通過例如 cd /path/to/project; ctags -e -R .並通過選擇它 M-x visit-tags-table RET /path/to/TAGS RET,你可以,例如,使用 M-. 在函數調用上跳轉到函數定義, M-x tags-search 通過標籤表中描述的文件,以及。有關可用工具的詳盡說明,請參閱鏈接頁面。

較重的方法是通過 語義,一個完全在Emacs Lisp中實現的詞法分析器/解析器組合。雖然我對語義和標籤不太熟悉,但我得到的印像是,語義會導致較重的初始設置負擔,以換取更普遍有用的結果。除了鏈接的手冊頁,(Emacs Wiki文章)[http://www.emacswiki.org/emacs/SemanticBovinator] 在這裡可能會有額外的幫助。


1
2017-08-07 14:39





使用 i菜單

  1. M-X imenu
  2. tabAll.Methods
  3. tab 看所有方法

1
2018-06-12 08:46





您說“在源文本文件中顯示子例程/函數/類的列表(或任何此類事物 - 取決於您在其配置文件中定義的正則表達式”)。暫時忽略了parens中的那個部分,其他人已經做出了回應,但是不清楚你的意思是什麼?“一個源文件。

如果您要求查看功能列表等 定義 在給定的源文件中,然後在其定義之間導航,然後查看 Imenu在Emacs。請參閱Emacs手冊節點 Imenu。另見這個 EmacsWiki 關於 i菜單


0
2017-09-01 19:33