1

我有以下绑定:

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

但是任何一个键组合都会导致第一个: fill-paragraph,因此似乎Shiftand 因此 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 键可以正常工作。)

4

1 回答 1

3

Emacs 在处理移位方面存在一些令人困惑的问题,因为移位修饰符有时被视为普通修饰符,但有时是特殊情况来修改基本字符,因此它是大写的。

在这种情况下,我认为您需要?\M-Q. 相比之下,?\C-Q是一样的,?\C-q所以你需要使用?\C-S-q将一些东西绑定到 CSq。

这可能值得一个M-x report-emacs-bug.

于 2016-12-08T02:46:10.073 回答