为什么现代终端上的“meta”键被替换了?

为什么现代终端上的“meta”键被替换了?

我想了解 alt 键在终端上的行为。

从一些阅读中可以看出,“meta 键”在现代系统中已被替换为发送 Esc+,这是为什么?meta 和 Esc+ 之间有什么区别?

当您按下 alt 键时,mac 和 linux 执行的操作有什么区别?

这里有一些与无法在 vim 中映射元修饰符有关的讨论,因为我在这里指出了这一点:

https://github.com/maxbrunsfeld/vim-yankstack/wiki/Linux-terminal-configurations-for-correct-meta-key-handling

https://github.com/neovim/neovim/issues/3412#issuecomment-174333178

答案1

Alt键通常将字符作为发送的符号的前缀Esc,例如按Alt+x会生成Esc( 0x1B) 字节,后跟x

据我所知,传统上Meta密钥用于设置高位,例如Meta+x用于生成字节0xF8x= 0x780x78+ 第 8 位是0xF8)。或者可能曾经有两种不同的密钥流行配置Meta:设置第 8 位,以及发出前缀Esc

然后发生了两件事。

一是现在的计算机已经没有实体的Meta按键,所以在PC上运行的终端仿真器中,Alt按键就起到了作用。

另一个原因是,随着 Unicode (UTF-8) 的广泛采用,设置高位不再有任何意义;事实上,这与几乎所有非英文字母的编码相冲突。应用程序希望终端发送有效的 UTF-8,而翻转第 8 位会破坏这一点。

这就是终端最终呈现当前情况Alt(或者可能是Option在 Mac 上)发出Esc前缀的原因。

相关内容