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

时间:2009-06-08 14:51:07

标签: emacs

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

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

4 个答案:

答案 0 :(得分:143)

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

C-h w command-name

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

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

C-h k key-sequence

获取将运行的命令。

您可以通过键入

获取有关命令的详细信息,以及定义的任何非交互式功能
C-h f function-name

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

C-h f variable-name

键映射保存在变量中,但键码以原始格式存储。请尝试C-h v isearch-mode-map作为示例。

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

C-h ?

答案 1 :(得分:12)

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

要以编程方式获取绑定到给定键序列的命令,请使用带有键序列的函数key-bindinglookup-key并返回其绑定命令。函数key-bindingC-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文件中使用的,但是具有docstring的这个函数似乎另有建议。任何考虑使用where-is-internal的人都应首先检查remapping keys是否可以实现目标。

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

答案 2 :(得分:12)

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

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

答案 3 :(得分:3)

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

M-x describe-bindings

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

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