如果我知道一个emacs命令名称,说"goto-line"; 如果我想查询是否有任何键序列绑定到此命令,该怎么办?
反之亦然,给定一个键序列,我该如何找到它的命令名?
要查找命令的键绑定,可以使用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 ?
要以交互方式获取绑定到键盘快捷键(或Emacs术语中的键序列)的命令,请参阅所选答案.
要以编程方式获取绑定到给定键序列的命令,请使用该函数key-binding
或lookup-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文件中使用的,但是这个具有docstring的函数似乎暗示了其他方式.任何考虑使用的人where-is-internal
都应首先检查重新映射密钥是否可以实现其目标.
C-h w
(或F1-w
):where-is
RET somecommandname RET
只是你要问的是 - 列出没有附加信息的绑定密钥.:)