在 vim 的终端应用程序中使用 Shift 或 Command 映射功能键

Mapping Function keys with Shift or Command in Terminal app for vim

我想映射功能键和 shift/command 的组合,以便在 macOS 默认终端应用程序中切换 vim。

例如,

map <S-F5> [something Toggle]

map <C-S-F5> [something Toggle]

然而,在终端应用程序中,F5 (~F11) 和 shift 键的组合仅表示为波浪线 (~),因此用 vim 打开的文本文件中的内容变为大写。此外,Cmd+F5 是 VoiceOver 的快捷方式,这就是为什么我无法使用 <C-S-F5> 进行切换的原因。

如果有人有想法,请回答。

谢谢

一般来说,您应该假定 Vim 看到的是修改后的键的输出,而不是所使用的修饰符或键。例如,在大多数情况下,当您按 Shift+A 时,Vim 会看到 A,而不是 <Shift>A。如果您的终端或 OS 或任何设置为在您按 Shift+A 时发送 ),那么 Vim 将看到 ) 并且不知道您在做什么确实发送了 ).

该设计的一个结果是 a) 键组合必须发送 某物 才能映射,以及 b) 所讨论的“某物”与其他组合发送的其他“东西”。

实际上,TUI Vim 无法区分 <F5><S-F5><C-S-F5>,它们都发送相同的字符序列。

FWIW,<C-Ctrl 的表示法。 Cmd 的表示法是 <D- 但 TUI Vim 永远不会收到 Cmd 所以无论如何你都不能使用它。

所以你基本上可以忘记:

  • Shift+功能键,
  • Ctrl+功能键,
  • Ctrl+Shift+功能键,
  • Cmd+任何东西。

注意:最近添加了 :help modifyOtherKeys,但在我的有限测试中,它似乎破坏了比修复的更多的东西。 YMMV.