在 emacs 中,如何显示当前缓冲区的阴影/覆盖键绑定?它们在运行时不会出现describe-bindings
( C-h b
)。
换句话说:如何查看缓冲区中活动的模式是否具有冲突的键绑定?
在 emacs 中,如何显示当前缓冲区的阴影/覆盖键绑定?它们在运行时不会出现describe-bindings
( C-h b
)。
换句话说:如何查看缓冲区中活动的模式是否具有冲突的键绑定?
只需致电describe-mode
:C-hm
大多数模式文档字符串将显示它们的键映射,并且用于在此处列出它们的方法还会告诉您绑定是否被隐藏。
它不会告诉你它被什么遮蔽了,但是用C-hcor来检查当然是微不足道的C-hk。
例如:
key binding
--- -------
[...]
C-M-q indent-sexp
(that binding is currently shadowed by another mode)
该文本由在调用该函数substitute-command-keys
时处理模式文档字符串的函数生成documentation
。
例如:
(substitute-command-keys "\\{lisp-interaction-mode-map}")
以下功能也很有用:
(key-binding KEY &optional ACCEPT-DEFAULT NO-REMAP POSITION) ;; dominant binding
(global-key-binding KEYS &optional ACCEPT-DEFAULT)
(local-key-binding KEYS &optional ACCEPT-DEFAULT)
(minor-mode-key-binding KEY &optional ACCEPT-DEFAULT) ;; discover keymap(s)
为了它,我这样做了:
(define-key c++-mode-map "\C-c\C-s" 'kaw-sort-projects)
然后做了 Ch b (查看绑定)。并得到了这个输出:
Major Mode Bindings:
key binding
--- -------
C-c C-q c-indent-defun
C-c C-s kaw-sort-projects
C-c C-u c-up-conditional
C-c C-w subword-mode
所以它似乎确实出现了。
这是你的意思吗?
创建了这个函数,当你定义一个键时,它会为你提供以前的值
(defun define-key-warn (map key fxn)
"Bind a key and give info message if already bound"
(setq old-fxn (lookup-key map key))
(if old-fxn
(message "INFO: key %s was defined as %s" key old-fxn))
(define-key map key fxn)
)