删除emacs中的主要模式键绑定

时间:2013-03-27 09:34:32

标签: emacs elisp

我安装了一个新的主要模式(sunrise commander),我想重置所有预定义的键绑定。 虽然我可以使用

(add-hook 'sr-mode-hook
    '(lambda ()
    (define-key sr-mode-map "KEY"        nil)
    ...
))

这种模式有很多绑定,根据我的口味标签很乏味。

有没有办法在单线或几线内完全重置此主模式的键绑定?


编辑#1: 我尝试使用如下所述的这些方法:

(eval-after-load "sunrise"
  '(setq sr-mode-map (make-sparse-keymap)))

OR

(add-hook 'sr-mode-hook
    (lambda ()
    (setq sr-mode-map (make-sparse-keymap))))
可悲的是,他们似乎都没有工作。

我真的需要定义一个新的空键映射吗? 例如。使用

(defvar sunrise-keys-mode-map (make-keymap) "sunrise-keys-mode keymap.")
(define-minor-mode sunrise-keys-mode
  "A minor mode so that my key settings override sunrise major mode keymap."
  t " my-keys" 'sunrise-keys-mode-map)
(sunrise-keys-mode 1)
(eval-after-load "sunrise" ;; Fix this line to include the correct library name
  '(setq sr-mode-map (sunrise-keys-mode)))

编辑#2:编辑#2: 在日出指挥官代码中进行了一些修补之后,我注意到sr-mode-map基于dired模式映射。我禁用了两者,而且效果很好。

(eval-after-load "sunrise-commander"
  '(setq sr-mode-map (make-sparse-keymap)
         dired-mode-map (make-sparse-keymap)))

供将来参考 - 以上是唯一需要的代码。 make-sparse-keymap是一个返回空键映射的函数(除非提供参数,显然)。

1 个答案:

答案 0 :(得分:2)

您可以将sr-mode-map绑定到新创建的空键映射:

(setq sr-mode-map (make-sparse-keymap))

您可能需要将此延迟到日出指挥官加载之后:

(eval-after-load "sc" ;; Fix this line to include the correct library name
  '(setq sr-mode-map (make-sparse-keymap)))