【问题标题】:How to handle conflicting keybindings如何处理冲突的键绑定
【发布时间】:2008-11-18 07:21:44
【问题描述】:

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

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

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

【问题讨论】:

    标签: emacs keyboard-shortcuts elisp


    【解决方案1】:

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

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

    【讨论】:

    • 这也是一个很好的通用答案 - 非常感谢。我的一个贡献是指出,如果您还想更改键绑定(而不是删除它),您可以将 paredit 函数的名称放在 Emerick 将 nil 放在上面的位置,就像我为“forward-啜”:(eval-after-load 'paredit '(progn (define-key paredit-mode-map (kbd "&lt;M-right&gt;") 'paredit-forward-slurp-sexp)))
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 2013-12-04
      • 1970-01-01
      • 2015-02-02
      • 2011-09-09
      • 1970-01-01
      • 2011-06-26
      • 2017-07-14
      • 2013-09-01
      • 2015-04-07
      相关资源
      最近更新 更多