如何使用鍵盤快捷鍵直接導航到Slime/Emacs中給定文件中的函數定義?我知道M-。但那不是我想要的。我已經在文件中並知道函數名稱。通過文本搜索不會直接將我帶到函數定義中,因爲它需要我調用該函數的網站。Slime/Emacs:用於轉到功能(非M-)的鍵盤快捷鍵
對於那些還了解Eclipse的人,我正在尋找使用Ctrl-O打開大綱視圖,然後在鍵入方法名稱時,它將過濾(elide)到我想要的函數,然後我只需按回車,它就會將我帶到那裏。
如果您有其他選擇,我也樂意嘗試。
如何使用鍵盤快捷鍵直接導航到Slime/Emacs中給定文件中的函數定義?我知道M-。但那不是我想要的。我已經在文件中並知道函數名稱。通過文本搜索不會直接將我帶到函數定義中,因爲它需要我調用該函數的網站。Slime/Emacs:用於轉到功能(非M-)的鍵盤快捷鍵
對於那些還了解Eclipse的人,我正在尋找使用Ctrl-O打開大綱視圖,然後在鍵入方法名稱時,它將過濾(elide)到我想要的函數,然後我只需按回車,它就會將我帶到那裏。
如果您有其他選擇,我也樂意嘗試。
這聽起來像你正在尋找M-x imenu
。它默認沒有鍵盤快捷鍵;我喜歡將其綁定到s-i
:
(global-set-key [(super ?i)] 'imenu)
正如@legoscia說,i菜單就是答案。作爲額外的信息,我會提及Icicles如何增強您對Imenu的使用。
明顯的增強是更好的完成(子字符串,正則表達式,...),包括縮小與多種模式的選擇。
不明顯的是冰柱multi-commands專門爲Imenu導航,給你,實際上,一個Imenu瀏覽器。這被描述爲here。
有不同的命令來導航到的/不同的種的Emacs Lisp定義中:命令,非命令功能,臉,不同種,用戶選項,和其他變量的鍵盤佈局。
導航時,可以對與您的輸入匹配的候選項進行排序,並按排序順序在它們的任何子集之間循環。
這些命令有「完整」版本,它們不僅提供了與Imenu正則表達式(例如(defun foobar (
)和當前輸入相匹配的候選,還提供了完整定義(例如全功能定義)。
這些導航命令也用於搜索。特別是,「完整」版本提供了與當前小型緩衝器輸入匹配的完整定義作爲候選。在您逐漸更改輸入時,將搜索完整的定義,縮小選擇的範圍。然後你可以在其中任何一箇中導航。
你也可以用lispy做到這一點。 它是用於Elisp,Clojure, Common Lisp和Scheme的Paredit,vi和IDE功能的混合體。
您需要的功能由lispy-goto
提供,綁定到 g。它使用CEDET解析整個源目錄, 允許您跳轉到當前目錄中所有文件的標記。
還有lispy-goto-local
綁定到G, 只在當前文件中查找標籤。
helm
完成用於兩個命令,所以它非常快。 查看 Navigating a directory of Common Lisp code with lispy.el 的截屏視頻。
你可以看到,它比imenu
先進得多: 它識別標籤類型,如in-package
,defparameter
, defconstant
,defclass
等,這也可以擴展到任意 標籤,比如泥的define-pattern-substitution
。
另外,lispy
使用SLIME提供嵌入式參數(替代eldoc)和 eval綁定。