如何获取所有当前可用命令和热键的列表?

时间:2013-10-25 23:59:56

标签: emacs key-bindings

为了帮助我学习使用各种emacs模式,我想有一个带有一个小HTML页面的第二个监视器,用于向我展示我可以输入什么类型的东西或关键词和我当前的任何东西看着emacs。

那么我如何获得当前模式下可用的所有命令或键和弦的列表?

3 个答案:

答案 0 :(得分:1)

其他人无疑会告诉您如何获取您要求的备忘单(好吧,here也是关于此的信息)。

但是如果你想要一些能够动态告诉你当前环境中哪些键可用的东西,无论它是什么,那么这就是我要提供的:

  • C-h m告诉您当前(主要)模式。 C-h b会告诉您当前可用的密钥。

  • Icicles功能key completion可让您通过密钥S-TAB访问所有当前可用的密钥序列。如果您首先使用前缀密钥,然后S-TAB,那么您将看到该前缀密钥的所有完成。您可以上下移动键层次结构,甚至包括菜单项,以查看所有可能的键。您可以使用C-M-RET获取可用的任何给定密钥的帮助(有关信息)。以下是关于此功能的一些more,其中显示了所有当前可能的键绑定。

答案 1 :(得分:0)

尝试使用pacakge help-fns+.el,有一些有用的功能:describe-mode - “显示当前主要模式和次要模式的文档。”,describe-keymap - “在KEYMAP中描述绑定,a变量,其值是键映射。“等等。例如,

(describe-keymap 'global-map)           ;; global bindings
(describe-keymap 'emacs-lisp-mode-map)  ;; major mode bindings
(describe-keymap 'smartparens-mode-map) ;; minor mode bindings

答案 2 :(得分:0)

我非常希望自己能够很好地回答这个问题!目前我正在使用这个简单的函数来显示*Help on keys*缓冲区中当前主要模式的键绑定:

(defun describe-current-bindings (mode)
  "Show key bindings for the current major mode in *Help on keys* buffer."
  (interactive)
  (with-current-buffer (get-buffer-create "*Help on keys*")
    (erase-buffer)
    (insert (documentation mode))))

然后每当我切换缓冲区或窗口时,使用defadvice自动调用该函数:

(defadvice switch-to-buffer (after display-keys-buffer activate)
  (describe-current-bindings major-mode))

(defadvice select-window (after display-keys-window activate)
  (describe-current-bindings major-mode))

现在我可以在另一帧中打开*Help on keys*缓冲区并将该帧移动到我的第二台监视器。

如果您使用其他功能切换窗口(来自windmove包等),您可能还需要为它们添加defadvice