Gnome 终端出现 VT100 光标移动代码错误

Gnome 终端出现 VT100 光标移动代码错误

我在 Gnome 终端上遇到了 ansi 转义问题。可能是什么原因造成的以及如何解决此类问题?由于我无法很好地描述该问题,因此我有一个屏幕截图来展示它。当我在终端中编辑一行或在 Vim 中更改行时,我得到看起来像部分 ansi 转义序列的内容。在下图中,它是蓝色突出显示的区域。这些不应该存在,而应该是正确颜色的文本。

在此输入图像描述

答案1

这可能是一个尝试更改文本光标外观的插件。 tmux 也使用该功能,例如,如xterm+tmux终端描述的构建块。应用程序正在发送一个DECSCUSR控制序列,如XTerm 控制序列:

CSI Ps SP q
          Set cursor style (DECSCUSR, VT520).
            Ps = 0  -> blinking block.
            Ps = 1  -> blinking block (default).
            Ps = 2  -> steady block.
            Ps = 3  -> blinking underline.
            Ps = 4  -> steady underline.
            Ps = 5  -> blinking bar (xterm).
            Ps = 6  -> steady bar (xterm).

您的屏幕截图上的6可能指的是6此处列出的。这是添加在补丁#282(2012/09/28),正如所指出的xterm特征。

参考 tmux 2.1 的源代码,它有一个编译后的默认设置值terminal-override

    { .name = "terminal-overrides",
      .type = OPTIONS_TABLE_STRING,     
      .default_str = "xterm*:XT:Ms=\\E]52;%p1%s;%p2%s\\007"
                     ":Cs=\\E]12;%p1%s\\007:Cr=\\E]112\\007"
                     ":Ss=\\E[%p1%d q:Se=\\E[2 q,screen*:XT"
    },

评论:

  • 应该XT是多余的(因为 ncurses 的数据库会有这个)。它或多或少在screen手册页中定义。
  • Ms字符串与选择数据相关(您可能想要这样,但在其他终端中正确支持它的可能性很小)
  • 其他用于光标外观。

作为快速检查,您可以terminal-overrides在 中设置tmux.conf,省略光标功能:

terminal-overrides xterm*:XT:,screen*:XT

相关内容