^[[3231m
^[[4232m
^[[3130m
这些序列在我负责的终端模拟器中显示为无效令牌,如果我能为它们找到适当的文档,我想添加对这些序列的支持。
在受影响的系统上设置以下与终端相关的环境变量:
TERM=xterm
COLORTERM=
我没有尝试过这两个变量的任何其他设置。
vim是版本7.2,但我尝试过具有相同效果的新版本。
谢谢!
答案 0 :(得分:4)
您的终端是否支持88或256色模式?如果是这样,您应该使用xterm-88color
或xterm-256color
之类的TERM值,而不是普通xterm
。
inkpot 特别声明不支持仅支持8/16色的终端。从inkpot source:
的顶部开始" 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种颜色的情况提供回退值(例如,当TERM=xterm
时)。如果 inkpot 发出错误消息(并且没有修改颜色设置),如果终端似乎没有适当的颜色支持,那也许会很好。
您正在看到的控制序列是由于尝试为该类型的终端的可接受输入的0-7范围之外的颜色编号生成8色终端颜色控制序列而产生的。因此,这些序列可能无效,但它们也不是完全有意的(因为 inkpot 假设256色支持,但xterm
terminfo条目只知道如何处理基本8-颜色支持)。
例如, inkpot 在88色终端上将Normal
语法前景色设置为79;对于非88色终端,这被转换为231(即256色终端,但也适用于8色xterm
)。
当您尝试使用TERM=xterm
格式化此超出范围的颜色编号时,您会得到您找到的结果^[[3231m
:
% tput -T xterm setaf 231 | od -a
0000000 esc [ 3 2 3 1 m
0000007
(即在231
和^[[3
之间插入m
)
如果您使用xterm-256color
,则会获得更正常的结果:
% tput -T xterm-256color setaf 231 | od -a
0000000 esc [ 3 8 ; 5 ; 2 3 1 m
0000013
(即在231
和^[[38;5;
之间插入m
)
类似地,80的Normal
语法88色背景颜色被转换为256色值232并为^[[4232m
生成错误的xterm
序列(但会生成^[[48;5;232m
下更合理xterm-256color
。
答案 1 :(得分:0)
^[[3231m
看起来很像是一个完成/出错的颜色定义:
^[[32;31m
无论如何都没有多大意义。
对$TERM
或任何值的特定值是否会发生?什么Vim版本?我们在谈论什么终端模拟器?