我已全局将C-c/
分配给ace-jump-mode但reftex-mode(AucTeX使用的引用的次要模式)会使用我从未使用的某个函数覆盖此键。
我尝试了local-unset-key
,但它只解除了当前主要模式地图中的键。
如何在不更改reftex.el的情况下从C-c/
删除reftex-mode-map
?
答案 0 :(得分:42)
您可以使用define-key
更改现有的键映射。通过传递nil
作为要调用的函数,密钥将变为未绑定。我想你应该可以做类似的事情:
(define-key reftex-mode-map "\C-c/" nil)
当然,你应该在某种钩子中做到这一点,例如:
(defun my-reftex-hook ()
(define-key reftex-mode-map "\C-c/" nil))
(add-hook 'reftex-mode-hook 'my-reftex-hook)
答案 1 :(得分:7)
您可以使用以下命令:
(define-key reftex-mode-map "\C-c/" nil)
从C-c /
取消映射此功能...但应加载reftex-mode
,因此reftex-mode-map
可用于修改
答案 2 :(得分:1)
我就是这样做的。不过,它可以改进。
(defun get-key-combo (key)
"Just return the key combo entered by the user"
(interactive "kKey combo: ")
key)
(defun keymap-unset-key (key keymap)
"Remove binding of KEY in a keymap
KEY is a string or vector representing a sequence of keystrokes."
(interactive
(list (call-interactively #'get-key-combo)
(completing-read "Which map: " minor-mode-map-alist nil t)))
(let ((map (rest (assoc (intern keymap) minor-mode-map-alist))))
(when map
(define-key map key nil)
(message "%s unbound for %s" key keymap))))
;;
;; Then use it interativly
;; Or like this:
(keymap-unset-key '[C-M-left] "paredit-mode")
..
..