如果我知道一个emacs命令名,比如"goto-line";如果我想查询是否有任何键序列绑定到这个命令,该怎么办?
反之亦然,给定一个键序列,我如何找到它的命令名?
发布于 2009-06-08 14:54:12
要只查找命令的键绑定,可以使用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 ?
发布于 2013-03-27 05:07:55
要以交互方式将命令绑定到键盘快捷键(或Emacs术语中的键序列),请参阅所选答案。
要以编程方式将命令绑定到给定的键序列,请使用接受键序列并返回其绑定命令的函数key-binding
或lookup-key
。C-h k
使用的是key-binding
函数。
(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用户在其初始化文件中使用,但是这个具有文档字符串的函数似乎表明并非如此。任何考虑使用where-is-internal
的人都应该首先检查remapping keys是否可以实现他们的目标。
用于寻找绑定到特定命令(例如,forward-char
)的密钥的替代方案是substitute-command-keys
(例如,(substitute-command-keys "\\[forward-char]")
)。这在较大的文本中尤其有用。
发布于 2013-07-24 22:04:03
C-h w
(或F1-w
):where-is
RET某个通用名称RET
做你想做的事情--列出绑定的键,而不需要额外的信息。:)
https://stackoverflow.com/questions/965263
复制相似问题