如何设置全局覆盖并优先于该键的所有其他绑定的键绑定?我想覆盖所有主要/次要模式映射并确保我的绑定始终有效。
这当然行不通:
(global-set-key "\C-i" 'some-function)
它适用于text-mode
,但是当我使用lisp-mode
, C-i
是反弹到lisp-indent-line
.
我可以遍历并覆盖这个绑定lisp-mode
以及单独的所有其他模式,但必须有一种更简单的方法。每次我为新文件类型安装新模式时,我都必须返回并检查以确保我的所有键绑定没有被新模式覆盖。
我想这样做是因为我想模仿我已经从其他编辑器中学到并根深蒂固的绑定。
我对所有“覆盖”键绑定使用次要模式:
(defvar my-keys-minor-mode-map
(let ((map (make-sparse-keymap)))
(define-key map (kbd "C-i") 'some-function)
map)
"my-keys-minor-mode keymap.")
(define-minor-mode my-keys-minor-mode
"A minor mode so that my key settings override annoying major modes."
:init-value t
:lighter " my-keys")
(my-keys-minor-mode 1)
这还有一个额外的好处,就是能够一次性关闭所有修改(只需禁用次要模式),以防其他人正在操作键盘或者我需要查看默认键绑定的作用。
请注意,您可能需要在迷你缓冲区中将其关闭:
(defun my-minibuffer-setup-hook ()
(my-keys-minor-mode 0))
(add-hook 'minibuffer-setup-hook 'my-minibuffer-setup-hook)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)