当存在未移位版本时,将忽略移位命令

时间:2016-12-07 18:43:47

标签: emacs emacs-prelude

我有以下绑定:

M-q   => fill-paragraph
M-S-q => unfill-paragraph

但是,任何一个关键组合都会产生第一个:fill-paragraph,所以它 似乎是Shift因此 unfill被忽略。我订了 第二我自己:

(prelude-require-package 'unfill)
(define-key prelude-mode-map "\M-\S-q" nil)  ; don't let prelude dictate it
(global-set-key (kbd "M-S-q") 'unfill-paragraph)

Emacs有一种行为可以回归到一个未移位的序列 当移位的版本不存在时(这似乎很好,但应该 不会发生这种情况)。所以,如果我没有M-S-q 绑定,然后按下应该导致fill-paragraph,这 是我不高兴看到的。这表明不知何故Emacs 不知道第二次绑定。但我已经证实确实如此 知道C-h f unfill-paragraph确认它。从中调用 M-x表明它运作良好。

为什么忽略Shift

(这是Emacs的GUI版本,我的Shift键适用于其他人 的东西。)

1 个答案:

答案 0 :(得分:3)

Emacs有一些令人困惑的问题w.r.t处理shift,因为shift修饰符有时被视为普通修饰符,但其他时候是特殊的,以修改基本char,因此它是大写的。

在这种情况下,我认为你需要?\M-Q。相比之下,?\C-Q?\C-q相同,因此您需要使用?\C-S-q将某些内容绑定到C-S-q。

这可能值得M-x report-emacs-bug