【发布时间】:2013-11-05 05:49:18
【问题描述】:
为了帮助我学习使用各种 emacs 模式,我想要第二台显示器,上面有一个小的 HTML 页面,用于向我展示我可以输入什么类型的东西,或者在我目前正在使用的任何东西上使用键和弦在 emacs 中查看。
那么我怎样才能获得在我当前模式下可用的所有命令或键和弦的列表?
【问题讨论】:
标签: emacs key-bindings
为了帮助我学习使用各种 emacs 模式,我想要第二台显示器,上面有一个小的 HTML 页面,用于向我展示我可以输入什么类型的东西,或者在我目前正在使用的任何东西上使用键和弦在 emacs 中查看。
那么我怎样才能获得在我当前模式下可用的所有命令或键和弦的列表?
【问题讨论】:
标签: emacs key-bindings
毫无疑问,其他人会告诉您如何获得您要求的备忘单(嗯,here 也是关于此的信息)。
但是,如果您想要动态地告诉您当前上下文中可用的键,无论它是什么,那么这就是我必须提供的:
C-h m 告诉您当前(主要)模式。 C-h b 告诉您当前可用的密钥。
Icicles 功能 key completion 可让您通过键 S-TAB 访问所有当前可用的键序列。如果您先使用前缀键,然后使用S-TAB,那么您会看到该前缀键的所有补全。您可以上下移动键层次结构,甚至包括菜单项,以查看所有可能的键。您可以使用C-M-RET 来获取帮助(有关信息)任何可用的给定密钥。这里有一些 more 关于这个向你展示所有当前可能的键绑定的功能。
【讨论】:
我非常想知道这个问题的好答案!目前我正在使用这个简单的函数来显示*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。
【讨论】:
试试 pacakge help-fns+.el,有一些有用的功能:describe-mode - "显示当前主要模式和次要模式的文档。",describe-keymap - "描述 KEYMAP 中的绑定,一个值为 keymap 的变量."等。例如,
(describe-keymap 'global-map) ;; global bindings
(describe-keymap 'emacs-lisp-mode-map) ;; major mode bindings
(describe-keymap 'smartparens-mode-map) ;; minor mode bindings
【讨论】: