1

在使用 inkpot 方案时,vim 似乎会向底层终端发送几个奇怪的(即未记录的)转义序列。我无法将它们与任何 VT-100 或 ANSI 转义码匹配;有谁知道这些序列是什么?

^[[3231m
^[[4232m
^[[3130m

这些序列在我负责的终端仿真器中显示为无效标记,如果我能找到适当的文档,我想添加对这些序列的支持。

在受影响的系统上设置了以下与终端相关的环境变量:

TERM=xterm
COLORTERM=

我没有为这两个变量尝试任何其他设置。

vim 是 7.2 版,但我尝试过具有相同效果的较新版本。

谢谢!

4

2 回答 2

4

您的终端是否支持 88 色或 256 色模式?如果是这样,您可能应该使用 TERM 值,例如xterm-88colororxterm-256color而不是 plain xterm

inkpot特别声明不支持仅支持 8/16 色的终端。从墨罐的顶部:

" This should work in the GUI, rxvt-unicode (88 colour mode) and xterm (256
" colour mode). It won't work in 8/16 colour terminals.

设置语法着色的代码假定如果终端不支持 88 色,那么它必须支持 256 色。它不会尝试为 8 种颜色的情况(例如 when TERM=xterm)提供备用值。如果终端似乎没有适当的颜色支持,如果inkpot发出错误消息(并且没有修改颜色设置)也许会很好。


您看到的控制序列是由于尝试为该类型终端可接受的输入 0-7 范围之外的颜色编号生成 8 色终端颜色控制序列。因此,这些序列可能无效,但它们也不是完全有意的(因为inkpot假设支持 256 色,但xtermterminfo 条目只知道如何处理基本的 8 色支持)。

例如,inkpotNormal在 88 色终端上将语法前景色设置为 79;对于非 88 色终端(即 256 色终端,也适用于您的 8-color xterm),这被转换为 231。

当您尝试使用 格式化此超出范围的颜色编号时TERM=xterm,您会得到^[[3231m您找到的结果:

% tput -T xterm setaf 231 | od -a
0000000  esc   [   3   2   3   1   m
0000007

(即在和231之间插入)^[[3m

如果你使用xterm-256color,你会得到一个更正常的结果:

% tput -T xterm-256color setaf 231 | od -a
0000000  esc   [   3   8   ;   5   ;   2   3   1   m
0000013

(即在和231之间插入)^[[38;5;m

类似地,Normal语法 88-color background color of 80 被转换为 256-color 值 232 并产生错误^[[4232m序列 for xterm(但会产生更合理^[[48;5;232m的 under xterm-256color)。

于 2013-11-17T07:22:33.530 回答
0
^[[3231m

看起来很像颜色定义完成/出错:

^[[32;31m

无论如何,这没有多大意义。

它是否以特定价值$TERM或任何价值发生?什么 Vim 版本?我们在谈论什么终端模拟器?

于 2013-11-16T22:10:56.533 回答