为什么GNU屏幕会干扰Vim的Ctrl-Pageup切换标签?


3

我通常使用 按Ctrl + 上一页 按Ctrl + 向下翻页 在Vim中切换标签。但是当在GNU屏幕内运行Vim时,它们不会切换标签,而是具有切换大小写的效果。

我在我的运行中运行以下绑定 .screenrc

bindkey "^[[1;5D" prev
bindkey "^[[1;5C" next

这些让我可以在两者之间移动 screen 标签 按Ctrl + 按Ctrl +

但禁用这些绑定并不能解决我的问题所以我不认为他们是罪魁祸首。

我假设我的终端模拟器,屏幕和Vim之间有一些我不理解的互动。

编辑:我找到了通过 这个答案 那个用vim开始的 TERM 环境变量集(重写)到 xterm 是一个可行的解决方法,像这样:

TERM=xterm vim

但我认为问题仍然存在,因为我想知道为什么这是必要的。

Answers:


2

通常在你跑步的时候 screen 它进行一些初始化(取决于实际终端)可以改变由各种键盘键发送的转义序列。

例如,我可以看到它初始化 xterm

  • 应用程序光标键
  • 应用键盘

在应用程序模式下,xterm(和其他终端)使用不同的前缀更改未修改的特殊键发送转义序列的方式( 逃逸 [ 逃逸 Ø )。对于修改过的密钥(例如 控制 上一页 ),xterm不会改变它的方案。但您使用的终端可能会这样做。

既然都没有 screen 也不 vim 注意这些修改过的密钥的终端描述,他们不会看到终端描述在运行时有所不同 screen。但你可以检查一下如何运行 screen 更改这些键发送的实际字符串,并调整您的 .screenrc 反映这一点。

您可以使用查看实际字符串

  • cat -v (在大多数系统上),或
  • 用特殊键加前缀 控制 V

进一步阅读:


我应该如何查看这些密钥发送的实际字符串?
jl6
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.