Gnome 终端 + Vim 和 Ctrl-Shift 映射

Sim*_*mon 11 vim gnome-terminal

是否可以在 Gnome 终端中使用Ctrl-映射序列Shift

我正在尝试添加映射

  • map <C-S-[> gT
  • map <C-S-]> gt

它不起作用。怎么做?

不知何故,我映射了<C-S-]>,但事实证明它不是<C-S-]>,但是<C-]>,所以看起来它不能识别这个序列中的 Shift 。是配置错误还是 gnome-terminal 的错?

除了。映射<C-[>,按下后,看起来 vim 正在等待。我想这是映射超时,但是当我精确按下<C-[>并且不想按下其他任何东西时如何摆脱这个超时?

我刚开始学习 vim,如果映射中存在明显错误,我很抱歉。

Bar*_*ner 8

我认为这里的问题是您试图让希望在终端中运行的 vim 识别 CTRL-SHIFT 序列。虽然 X 可以识别这样的组合,但在终端(或者现在的终端模拟器)中运行的应用程序却不能。这是因为,从历史上看,终端只能通过串行连接发送和接收 ASCII 数据的七位或八位序列(尽管这可能包括定位光标、滚动或删除行、更改颜色和其他有用的“转义序列”效果)。

ASCII 字符集中有 32 个“控制代码”,包括熟悉的 CTRL-A 到 CTRL-Z。但是“CTRL-SHIFT”A 到 Z 没有对应的 ASCII 代码。现在,gnome-terminal 本身可以识别这些代码(例如,CTRL-SHIFT-V 将粘贴剪贴板中的文本),但 vim 不会能够直接访问它。

当然,有可能(我不知道)将终端模拟器设置为将 CTRL-SHIFT 按键转换为转义序列,然后可以通过 vim 映射识别该序列。

========

更新

您可能对 gvim 感兴趣,它是 vim 的图形版本,作为 X 程序而不是终端程序运行。也许 gvim 能够理解 CTRL-SHIFT 代码?


小智 4

GNOME 终端似乎存在不允许某些按键组合的问题Ctrl。网上一查,这样的例子很多。

以防万一您不知道,Ctrl+ page up/page down循环浏览选项卡。