为什么 Vim 中的命令后必须按空格键?

为什么 Vim 中的命令后必须按空格键?

我经常遇到这样的情况:我必须按下space才能“启动”我输入的命令,例如在我点击~交换字母的大小写后。

这是为什么?

答案1

muru 和其他人正在从 vim 本身的可编程性和可配置性的角度来看待这个问题;其他评论回答者正在关注 SSH。但还有第三种截然不同的答案。

  • 您的键盘布局支持死钥匙
  • 在您的布局中,~就是这样一个死键,可能映射到传统的U+0303“组合波浪号”(̃)。
  • 您的布局采用 ISO/IEC 9995-3 和 ISO/IEC 9995-11 中规定的通常约定,即组合字符死键后跟Space一个等效的结果不结合、 间距、 字符。

因此,按下就是如何在终端模拟器中~Space获得一个简单的“波形符”(~) 字符;U+007E以及如何实际执行 vim 命令。按键~本身根本不会通过终端发送字符,因为终端模拟器正在等待查看组合“死”键后接下来按下的内容。就 vim 而言,此时实际上还没有发生任何事情。

如果是这种情况,您可以通过进入插入模式然后按别的东西之后~。您按下的键当然取决于您选择的键盘布局。通常,~a将组合到ã此类布局中。

鲜为人知的标准主义

ISO/IEC 9995-3:2010 定义的“公共辅助组”旨在在不同的国家布局中保持不变。 “组合波浪号”字符U+0303在次要组中具有标准位置。

因此:在符合 ISO/IEC 9995-3:2010 的键盘布局上,无论主要组布局如何,都应该能够将波形符与相同的按键序列组合起来。

  • 这些键是⯖ Group2D12,以标准语言表示。 是建议用于雕刻“Group 2 Select”键的 Unicode 字形。大多数当前文档使用, 原因很明显,如果您的 WWW 浏览器在前一句中显示空白键盘。 ☺
  • 就人们可能在键顶上看到的实际雕刻而言,这将类似于Shift+ AltGr](PC 风格的美国布局)或Shift+ ⌥ Option](Mac 风格)。请注意,这是两个独立的和弦。单和弦Shift+ AltGr+]是另一回事。

这尤其意味着,在这里:如果您切换到布局,~其中不是死键,这可能就是您即将要做的,只要键盘布局支持 ISO/IEC“通用辅助组”,您仍然可以在需要时访问死键。

您的终端模拟器和键盘布局很可能不支持这一点,因为在撰写本文时具体的实现非常罕见。但这正是人们过去几年一直在推动的 ISO 键盘标准。

相关内容