helm buffer 本身就把大部分按键那重新绑定了,以至于 “C-h” “M-x” 之类的按键无法使用。而 Spacemacs 又把 helm 的许多按键重新做了绑定,想要列出 helm 中所有可用按键或查找某个函数在 helm 中的实际调用按键就需要读 helm 源码/文档对照着 spacemacs 的文档,十分费力。
在 Emacs 中绝大情况下,可以用 which-key
或者 describe-bindings
看一下按键绑定,但这两个在 helm buffer 中都没有方便的调用方法。
今天终于折腾出一个方法可以一次导出某个 helm buffer 所有的按键绑定。
首先,"SPC T m“ 开启 Emacs 菜单栏。 然后进入一个 helm buffer,比如说 helm-M-x, 从 Emacs 菜单栏找到 Help → Describe → List key bindings。这解决了第一个问题,C-h 无法使用。
但打开的是 helm-descbinds
,仍然不是一个可以正常进行文本操作的 buffer。此时有两个办法。
第一个办法是从 Emacs 菜单栏找到 Buffers → List all buffers,在新出的 Buffer List 中点击 *helm-descbinds*
重新打开该 helm buffer,此时 helm 所做的按键限制大部分已经消失,可以直接使用 EVIL mode 复制该 buffer 的所有内容并粘贴。
第二个办法是在 helm-descbinds
界面先按 M-a 选中所有条目,再按 C-c TAB 复制所有条目,此时所有条目会被插入到之前的 helm buffer(在此例中是 helm-M-x)的输入框中(但并没有进 kill ring),然后连续按 M-k 删除输入框中的所有条目(不能使用 C-k 是因为 C-k 被 Spacemacs 重映射为移动光标)。全部删掉之后,找一个 buffer 粘贴即可。
用这个方法导出 helm 的所有按键绑定之后,发现了许多之前没发现的功能,比如说 C-q ace-jump-helm-line