如何处理冲突的键绑定

时间:2008-11-18 07:21:44

标签: emacs keyboard-shortcuts elisp

paredit绑定M-<up>M-<down>,但我希望windmove拥有这些键绑定。我将paredit-mode设置为仅在某些模式下激活,但windmove设置为全局运行。我想要windmove获胜,但是paredit在加载时窃取了那些键绑定。

如何轻松阻止paredit踩踏windmove的键绑定?我已经进入paredit.el并评论了设置键绑定的行,但这远非理想(我必须记住每次更新paredit时都这样做。)

更一般地说,我可以加载elisp文件,同时“保护”某些键绑定不被更改吗?

2 个答案:

答案 0 :(得分:13)

您可以使用eval-after-load在加载后配置paredit的行为,如其评论中所述:

;;; Customize paredit using `eval-after-load':
;;;
;;;   (eval-after-load 'paredit
;;;     '(progn ...redefine keys, &c....))

所以,例如:

(eval-after-load 'paredit
  '(progn
     (define-key paredit-mode-map (kbd "<M-up>") nil)
     (define-key paredit-mode-map (kbd "<M-down>") nil)))

答案 1 :(得分:1)

之前已回答过这个问题:Globally override key binding in Emacs

您可以使用首选键绑定创建自己的次要模式,并全局启用它,以便覆盖所有其他键绑定。