簡體   English   中英

刪除emacs中的主要模式鍵綁定

[英]Remove major mode key bindings in emacs

我安裝了新的主要模式(日出指揮官),並且想重置其所有預定義的鍵綁定。 雖然我可以用

(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)))

要么

(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:在修改了日出指揮官代碼后,我注意到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是一個函數,它返回一個空的鍵盤映射(顯然,除非提供了參數)。

您將sr-mode-map綁定到新創建的空keymap:

(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)))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM