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


107

如果我知道emacs命令名称,请说“ goto-line”;如果我想查询该命令是否绑定了键序列,该怎么办?

反之亦然,给定键序列,如何找到其命令名?

Answers:


159

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

C-h w command-name

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

反之,给定键序列,您可以键入

C-h k key-sequence

获取将运行的命令。

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

C-h f function-name

它将为您提供有关功能的详细信息,包括该功能的所有键绑定,以及

C-h v variable-name

将为您提供有关任何(绑定)变量的信息。键映射保留在变量中,但是键代码以原始格式存储。尝试C-h v isearch-mode-map一个例子。

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

C-h ?


51
您也可以C-h w <function name>只知道关键在哪里,而不是完整的文档。相反,您也C-h c <key sequence>可以只知道键序列绑定了什么功能。
ShreevatsaR

7
还:Ch w通常绑定到where-is。
Cheeso

2
因此,当我忘记Ch w时,我可以在哪里-在哪里。那很棒 !;)
Sake 2009年

1
对于那些C-h在其窗口管理器中绑定了其他内容的用户:C-h w等同于M-x where-isC-h k等价于M-x describe-keyC-h f等价于M-x describe-functionC-h v等价于M-x describe-variableC-h ?等价于M-x help-for-help。另请注意,f1可以使用代替C-h
里卡多

13

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

只是按照您的要求进行操作-列出绑定键,而没有其他信息。:)


13

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

为了以编程方式将命令绑定到给定的键序列,请使用函数key-bindinglookup-key接受键序列并返回其绑定命令的函数。功能key-binding是用什么C-h k

(key-binding (kbd "C-h m"))

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

为了以编程方式将所有键序列绑定到给定命令,where-is-internal可能是要使用的功能。以。结尾的函数名称internal似乎表明,Emacs用户不应在其init文件中使用该函数,但此具有文档字符串的函数似乎表明并非如此。任何考虑使用的人where-is-internal都应首先检查是否重新映射密钥可以实现其目标。

查找绑定到特定命令(例如forward-char)的键的替代方法是substitute-command-keys(例如(substitute-command-keys "\\[forward-char]"))。这在较大的文本中特别有用。


查看的文档,where-is-internal可以使用它。同样,按照惯例,where-is--internal对于“私有”功能,我们使用类似(请注意双破折号)的格式。
GergelyPolonkai '16

2
此处-internal描述了后缀的用法:gnu.org/software/emacs/manual/html_node/elisp/…。它应用于内部C函数。
Tobias

4

一个古老的问题,但是对于新读者来说,还有一些其他不错的方式来查看键绑定

M-x describe-bindings

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

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-sisearch-forward)具有广泛的键映射,而这通常是未知的。例如M-s o开始occur使用当前的搜索字符串,使用Emacs多年以来我对此一无所知。有which-key各地帮助我发现在Emacs许多稀有宝石。

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

引导键

指南键的工作方式与which-key我建议对其进行比较以比较功能的方式几乎相同。

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.