为什么密钥绑定M-S-t在C-S-t工作时失败?

时间:2016-07-04 09:08:45

标签: emacs key-bindings

我从this question得到了问题,似乎我们无法将 shift meta 绑定,如M-S-t(始终翻译为M-t),但我们可以使用 control 这样做C-S-t(作为C-T)。

正如接受的答案所说,我们可以使用M-T,但为什么我们不能将它与 meta 一起使用?当与 meta 一起使用时,Emacs是否会忽略shift

1 个答案:

答案 0 :(得分:2)

我认为当没有使用Ctrl时,Emacs会忽略S-字母。

即。它与Meta无关;同样的事情适用于其他非Ctrl修饰符(实际上没有其他修饰符 - 你也不能绑定到普通S-t)。

理由可能是Ctrl键是唯一一个需要 字母的唯一情况:

(emacs) Modifier Keys

The default key bindings in Emacs are set up so that modified
alphabetical characters are case-insensitive.  In other words, ‘C-A’
does the same thing as ‘C-a’, and ‘M-A’ does the same thing as ‘M-a’.
This concerns only alphabetical characters, and does not apply to
“shifted” versions of other keys; for instance, ‘C-@’ is not the same as
‘C-2’.

   A <Control>-modified alphabetical character is always considered
case-insensitive: Emacs always treats ‘C-A’ as ‘C-a’, ‘C-B’ as ‘C-b’,
and so forth.  The reason for this is historical.

   For all other modifiers, you can make the modified alphabetical
characters case-sensitive when you customize Emacs.  For instance, you
could make ‘M-a’ and ‘M-A’ run different commands.

通过我的记忆终端不区分控制字符的情况,所以我会推测&#34;历史&#34;原因与此有关。

至少在手册中记录是合理的。如果目前没有相关的错误,您可能希望M-x report-emacs-bug建议这样的改进。

请注意,Shift修饰符可以与非字母键一起使用,有或没有其他修饰符。例如,M-S-SPC是一个公认的序列。