如何使用键盘快捷键直接导航到Slime / Emacs中给定文件中的函数定义?我知道M-。但那不是我想要的。我已经在文件中并知道函数名称。按文字搜索不会直接将我带到函数定义,因为它也会让我调用该函数的网站。
对于那些也了解Eclipse的人,我正在寻找相当于使用Ctrl-O打开大纲视图,然后当我输入方法名称时,它会过滤(删除)我想要的功能,我然后按下回车,它就在那里。
如果您有其他选择,我也很乐意尝试。
答案 0 :(得分:1)
听起来你正在寻找M-x imenu
。它默认没有键盘快捷键;我想将它绑定到s-i
:
(global-set-key [(super ?i)] 'imenu)
答案 1 :(得分:1)
正如@legoscia所说, Imenu 就是答案。作为附加信息,我将提及Icicles如何增强您对Imenu的使用。
明显的增强是更好的完成(substring,regexp,...),包括缩小多种模式的选择。
非常明显的是专门用于Imenu导航的冰柱 multi-commands,实际上为您提供了一个Imenu浏览器。这被描述为here。
有不同的命令可以导航到不同类型的Emacs Lisp定义中:命令,非命令函数,面,不同类型的键映射,用户选项和其他变量。
导航时,您可以对与您的输入匹配的候选项进行排序,并按排序顺序在它们的任何子集中循环。
这些命令有“完整”版本,它们不仅提供与Imenu regexp匹配的内容(例如(defun foobar (
)和您当前的输入,还提供完整的定义(例如,完整的函数定义) )。
这些导航命令也适用于 搜索 。特别是,“完整”版本提供了与您当前的迷你缓冲输入匹配的完整定义作为候选。当您逐步更改输入时,将搜索完整定义,从而缩小选择范围。然后,您可以在其中任何一个中进行导航。
答案 2 :(得分:1)
您也可以使用lispy执行此操作。 它是Elisp,Clojure的Paredit,vi和IDE功能的混合体, Common Lisp和Scheme。
您想要的功能由lispy-goto
提供,绑定到
克。它使用CEDET来解析整个源目录,
允许您跳转到当前目录中所有文件中的标记。
还有lispy-goto-local
绑定到 G
只在当前文件中查找标签。
helm
完成用于两个命令,所以它真的很快。
看一下
Navigating a directory of Common Lisp code with lispy.el
用于截屏视频。
您可以看到它比imenu
更先进:
它可以识别in-package
,defparameter
等标记类型,
defconstant
,defclass
等。这也可以扩展为任意
标签,例如SLIME的define-pattern-substitution
。
此外,lispy
使用SLIME提供内联参数(替代eldoc)和
eval bindings。