给定一个emacs命令名称,你将如何find键绑定? (反之亦然)
如果我知道一个emacs命令名称,说:“goto-line”; 如果我想查询是否有任何绑定到这个命令的键序列呢?
反之亦然,给定一个按键顺序,我怎样才能find它的命令名?
为了find一个命令的键绑定,你可以使用emacs help的“where-is”function
Ch w command-name
如果为该命令设置了多个绑定,则将全部列出。
相反,给定一个键序列,你可以input
Ch k key-sequence
获取将运行的命令。
您可以通过input来获取有关命令的详细信息,也可以获得任何定义的非交互式function
Ch f function-name
这将给你一个关于函数的详细信息,包括它的任何键绑定。
Ch f variable-name
键映射保存在variables中,但是键代码以原始格式存储。 尝试一下例子中的Ch v isearch-mode-map
。
有关获得帮助的更多帮助,可以键入
Ch ?
Ch w
(或F1-w
): where-is
RET somecommandname RET
只是你问什么 – 列出绑定的键没有额外的信息。 🙂
要交互地获取绑定到键盘快捷键(或Emacs术语中的键序列)的命令,请参阅所选答案。
要以编程方式获取绑定到给定键序列的命令,请使用带键序列的函数key-binding
或lookup-key
键并返回其绑定命令。 functionkey-binding
是Ch k
使用的。
(key-binding (kbd "Ch m"))
通过search所有当前的键盘映射来返回绑定到Ch m
的命令。 函数lookup-key
在一个keymap中search:
(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用户在他们的初始化文件中使用,但这个函数有一个文档string似乎build议不然。 任何考虑使用where-is-internal
都应该首先检查重映射密钥是否能实现他们的目标。
一个古老的问题,但为了新读者的利益,还有其他一些很好的方法来查看键绑定
Mx describe-bindings
列出当前可用的所有绑定,使用isearch,发生等,以便充分利用此列表。
Mx describe-prefix-map
这显示了当前模式下可用的所有绑定,您可以像使用任何其他只读的Emacs缓冲区一样使用显示缓冲区,例如可以自由searchstring等。
Mx describe-mode
除了提供有关当前模式的一般信息,还将列出所有可用的键绑定。
Mx describe-minor-mode
系统将提示您input次要模式的名称,然后显示该次要模式的信息和键绑定。
注意 :以下示例使用附加软件包(可从MELPA获得 )
哪个关键
这表明你在需要它们之前就已经绑定了。 input前缀,例如Cx
或Cc
并显示该前缀中可用绑定的列表。
您还可以使用以下命令来查看当前模式下可用的键绑定列表:
Mx which-key-show-top-level
将which-key-show-top-level
绑定到您select的键和弦是非常有用的,这样您就可以在任何地方查看可用的键。
例如, Cs
( isearch-forward
)有一个广泛的键盘映射,这通常是未知的。 例如, Ms o
使用当前的searchstring开始,我不知道使用Emacs很多年了。 拥有which-key
可以帮助我发现Emacs中的许多宝贵的gem。
https://github.com/justbur/emacs-which-key
指南键
引导键的工作方式与我推荐使用which-key
来比较function的方式大致相同。