我已经全局将C-c/
分配给了ace-jump-mode,但reftex-mode(与AucTeX一起使用的引用的次要模式)使用某个我从未使用过的函数覆盖了此键。
我尝试了local-unset-key
,但它只取消当前major模式映射中的键绑定。
如何在不更改reftex.el的情况下从reftex-mode-map
中删除C-c/
?
我已经全局将C-c/
分配给了ace-jump-mode,但reftex-mode(与AucTeX一起使用的引用的次要模式)使用某个我从未使用过的函数覆盖了此键。
我尝试了local-unset-key
,但它只取消当前major模式映射中的键绑定。
如何在不更改reftex.el的情况下从reftex-mode-map
中删除C-c/
?
你可以使用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)
(define-key reftex-mode-map "\C-c/" nil)
要将此功能从C-c /
取消映射... 但是需要加载reftex-mode
,以便可以修改reftex-mode-map
这是我做事的方式。虽然还有改进的空间。
(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")
..
..
eval-after-load
。 - event_jr(eval-after-load 'reftex'(define-key reftex-mode-map "\C-c/" nil))
的方法。eval-after-load
的第一个参数--这里是reftex
--是模式“提供”的名称。 - ntc2(define-key reftex-mode-map "\C-c/" nil :append t)
如果绑定在hook中定义,请附加。 - Michael Fox