给定emacs命令名称,您如何找到键绑定?(反之亦然)

Sak*_*ake 100 emacs

如果我知道一个emacs命令名称,说"goto-line"; 如果我想查询是否有任何键序列绑定到此命令,该怎么办?

反之亦然,给定一个键序列,我该如何找到它的命令名?

Ada*_*eld 151

要查找命令的键绑定,可以使用emacs帮助的"where-is"功能

C-h w command-name
Run Code Online (Sandbox Code Playgroud)

如果为命令设置了多个绑定,则将全部列出.

对于反向,给定键序列,您可以键入

C-h k key-sequence
Run Code Online (Sandbox Code Playgroud)

获取将运行的命令.

您可以通过键入获得有关命令的详细信息,以及定义的任何非交互功能

C-h f function-name
Run Code Online (Sandbox Code Playgroud)

这将为您提供有关函数的详细信息,包括其中的任何键绑定.

C-h v variable-name
Run Code Online (Sandbox Code Playgroud)

键映射保存在变量中,但键代码以原始格式存储.试试C-h v isearch-mode-map一个例子.

有关获得帮助的更多帮助,您可以输入

C-h ?
Run Code Online (Sandbox Code Playgroud)

  • 你也可以用`Ch w <function name>`来知道密钥的位置,而不是完整的文档.相反,你也可以做`Ch c <key sequence>`来知道哪个函数绑定到一个键序列. (51认同)
  • 另外:Ch w通常与where-is绑定. (7认同)
  • 所以,当我忘记Ch时,我可以在哪里.那很棒 !;) (2认同)
  • 对于那些在窗口管理器中将 `Ch` 绑定到其他内容的人来说:`Ch w` 相当于 `Mx where-is`。`Ch k` 等同于 `Mx 描述密钥`。`Ch f` 等价于 `Mx 描述函数`。`Ch v` 相当于 `Mx 描述变量`。`Ch ?` 相当于 `Mx help-for-help`。另请注意,可以使用“f1”代替“Ch”。 (2认同)

Jis*_*Yoo 13

要以交互方式获取绑定到键盘快捷键(或Emacs术语中的键序列)的命令,请参阅所选答案.

要以编程方式获取绑定到给定键序列的命令,请使用该函数key-bindinglookup-key获取键序列并返回其绑定命令.功能key-binding是用什么的C-h k.

(key-binding (kbd "C-h m"))
Run Code Online (Sandbox Code Playgroud)

C-h m通过搜索所有当前键盘映射返回绑定的命令.该函数lookup-key在单个键映射中搜索:

(lookup-key (current-global-map) (kbd "TAB")) ; => indent-for-tab-command
(lookup-key org-mode-map (kbd "TAB")) ; => org-cycle
(lookup-key text-mode-map (kbd "TAB")) ; => nil
(lookup-key isearch-mode-map (kbd "TAB")) ; => isearch-printing-char
Run Code Online (Sandbox Code Playgroud)

为了以编程方式获取绑定到给定命令的所有键序列,where-is-internal可能是要使用的函数.结尾的函数的名称internal似乎表明它不是Emacs用户在其init文件中使用的,但是这个具有docstring的函数似乎暗示了其他方式.任何考虑使用的人where-is-internal都应首先检查重新映射密钥是否可以实现其目标.

  • 后缀`-internal`的用法在那里描述:https://www.gnu.org/software/emacs/manual/html_node/elisp/Function-Names.html#Function-Names。它应该用于内部 C 函数。 (2认同)

Gle*_*est 13

C-h w(或F1-w):where-isRET somecommandname RET

只是你要问的是 - 列出没有附加信息的绑定密钥.:)


oco*_*odo 5

一个老问题,但为了新读者的利益,还有其他一些不错的方法可以查看键绑定

M-x describe-bindings

列出当前可用的所有绑定,使用 isearch、ocpose 等,以充分利用此列表。

M-x describe-prefix-map

这显示了当前模式中可用的所有绑定,您可以像使用任何其他只读 Emacs 缓冲区一样使用显示缓冲区,例如您可以自由搜索字符串等。

M-x describe-mode

除了为您提供有关当前模式的一般信息外,它还将列出所有可用的键绑定。

M-x describe-minor-mode

系统将提示您输入次要模式的名称,然后显示该次要模式的信息和键绑定。

注意:下面的示例使用附加包(可从MELPA 获得

哪个键

这会在您需要绑定之前向您显示绑定。输入前缀,例如C-xC-c,将显示该前缀中可用的绑定列表。

您还可以使用以下命令查看当前模式中可用的键绑定列表:

M-x which-key-show-top-level

绑定which-key-show-top-level到您选择的键和弦很有用,因此您可以从任何地方查看可用的键。

例如,C-s( isearch-forward) 有一个广泛的键映射,它通常是未知的。例如,M-s o开始occur使用当前的搜索字符串,在使用 Emacs 的很多年里,我都不知道这一点。有which-key各地帮助我发现在Emacs许多稀有宝石。

https://github.com/justbur/emacs-which-key

引导键

指南键的工作方式与which-key我建议查看它以比较功能的方式大致相同。

https://github.com/kai2nenobu/guide-key