Slime/Emacs:用于转到功能的键盘快捷键(非M-)

Slime/Emacs:用于转到功能的键盘快捷键(非M-),emacs,slime,Emacs,Slime,如何使用键盘快捷键直接导航到Slime/Emacs中给定文件中的函数定义?我知道M-。但这不是我想要的。我已经在文件中,并且知道函数名。文本搜索不会直接带我到函数定义,因为它也会带我去调用该函数的站点 对于那些也了解Eclipse的人来说,我正在寻找使用Ctrl-O打开outline视图的等效方法,然后当我键入方法名称时,它将过滤(elide)到我想要的函数,然后我只需按enter键,它就会将我带到那里 如果您有其他选择,我也很乐意尝试。听起来您正在寻找M-x imenu。默认情况下,它没有键盘

如何使用键盘快捷键直接导航到Slime/Emacs中给定文件中的函数定义?我知道M-。但这不是我想要的。我已经在文件中,并且知道函数名。文本搜索不会直接带我到函数定义,因为它也会带我去调用该函数的站点

对于那些也了解Eclipse的人来说,我正在寻找使用Ctrl-O打开outline视图的等效方法,然后当我键入方法名称时,它将过滤(elide)到我想要的函数,然后我只需按enter键,它就会将我带到那里


如果您有其他选择,我也很乐意尝试。

听起来您正在寻找
M-x imenu
。默认情况下,它没有键盘快捷键;我喜欢将它绑定到
s-I

(global-set-key [(super ?i)] 'imenu)
正如@legoscia所说,Imenu就是答案。作为补充信息,我将提到如何提高您对Imenu的使用

明显的增强是更好的完成(子字符串、regexp等),包括缩小多个模式的选择范围

不引人注意的是专门用于Imenu导航的冰柱,实际上为您提供了一个Imenu浏览器。这是描述的

  • 在不同类型的Emacs Lisp定义中,有不同的命令可以导航到:命令、非命令函数、面、不同类型的键映射、用户选项和其他变量

  • 导航时,可以对与输入匹配的候选项进行排序,并按排序顺序在它们的任何子集之间循环

  • 这些命令有“完整”版本,它们不仅提供与Imenu regexp(例如
    (defun foobar(
    )和当前输入匹配的内容,还提供完整的定义(例如,完整的函数定义)

  • 这些导航命令也可用于搜索。特别是,“完整”版本提供与当前小缓冲区输入匹配的完整定义作为候选。当您以增量方式更改输入时,将搜索完整定义,缩小选择范围。然后,您可以在其中任何一个版本之间导航

    • 您也可以使用。 它是对Elisp、Clojure和, 公共Lisp和Scheme

      所需的功能由
      lispy goto
      提供,绑定到 g、 它使用CEDET解析整个源目录, 允许您跳转到当前目录中所有文件中的标记

      还有绑定到G的
      lispy goto local
      ,即 仅在当前文件中查找标记

      helm
      completion用于两个命令,因此速度非常快。 看看 看电影

      您可以看到它比
      imenu
      高级得多: 它可以识别标签类型,例如包中的
      defparameter
      defconstant
      defclass
      等。这也可以扩展到任意 标签,如SLIME的
      定义模式替换

      另外,
      lispy
      使用SLIME提供内联参数(替代eldoc)和 评估绑定