我想了解 alt 键在终端上的行为。
从一些阅读中可以看出,“meta 键”在现代系统中已被替换为发送 Esc+,这是为什么?meta 和 Esc+ 之间有什么区别?
当您按下 alt 键时,mac 和 linux 执行的操作有什么区别?
这里有一些与无法在 vim 中映射元修饰符有关的讨论,因为我在这里指出了这一点:
https://github.com/neovim/neovim/issues/3412#issuecomment-174333178
答案1
该Alt键通常将字符作为发送的符号的前缀Esc
,例如按Alt+x会生成Esc
( 0x1B
) 字节,后跟x
。
据我所知,传统上Meta密钥用于设置高位,例如Meta+x用于生成字节0xF8
(x
= 0x78
;0x78
+ 第 8 位是0xF8
)。或者可能曾经有两种不同的密钥流行配置Meta:设置第 8 位,以及发出前缀Esc
。
然后发生了两件事。
一是现在的计算机已经没有实体的Meta按键,所以在PC上运行的终端仿真器中,Alt按键就起到了作用。
另一个原因是,随着 Unicode (UTF-8) 的广泛采用,设置高位不再有任何意义;事实上,这与几乎所有非英文字母的编码相冲突。应用程序希望终端发送有效的 UTF-8,而翻转第 8 位会破坏这一点。
这就是终端最终呈现当前情况Alt(或者可能是Option在 Mac 上)发出Esc
前缀的原因。