题
vim 似乎发送了几个奇怪的(即使用 inkpot 方案时,将转义序列转移到底层终端(未记录)。我无法将它们与任何 VT-100 或 ANSI 转义码相匹配;有谁知道这些序列是什么?
^[[3231m
^[[4232m
^[[3130m
这些序列在我负责的终端模拟器中显示为无效令牌,如果我能找到适当的文档,我想添加对这些序列的支持。
在受影响的系统上设置了以下与终端相关的环境变量:
TERM=xterm
COLORTERM=
我没有尝试过这两个变量的任何其他设置。
vim 是 7.2 版本,但我尝试过具有相同效果的新版本。
谢谢!
解决方案
您的终端支持 88 色或 256 色模式吗?如果是这样,您可能应该使用 TERM 值,例如 xterm-88color
或者 xterm-256color
而不是普通的 xterm
.
墨水瓶 特别声明不支持仅支持 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 种颜色的情况提供后备值(例如什么时候 TERM=xterm
)。也许如果 墨水瓶 如果终端似乎没有适当的颜色支持,则会发出错误消息(并且不修改颜色设置)。
您看到的控制序列是由于尝试生成 8 色终端颜色控制序列而产生的,其颜色编号超出了该类型终端可接受输入的 0-7 范围。因此,这些序列可能无效,但它们也不完全是故意的(出现是因为 墨水瓶 假设支持 256 色,但是 xterm
terminfo 条目只知道如何处理基本的 8 色支持)。
例如, 墨水瓶 设置 Normal
在 88 色终端上语法前景色为 79;对于非 88 色终端(即,适用于 256 色终端,也适用于您的 8 色 xterm
).
当您尝试使用以下格式格式化此超出范围的颜色数字时 TERM=xterm
, ,你得到结果 ^[[3231m
你发现:
% tput -T xterm setaf 231 | od -a
0000000 esc [ 3 2 3 1 m
0000007
(IE。插入 231
之间 ^[[3
和 m
)
如果你使用 xterm-256color
, ,您会得到看起来更正常的结果:
% tput -T xterm-256color setaf 231 | od -a
0000000 esc [ 3 8 ; 5 ; 2 3 1 m
0000013
(IE。插入 231
之间 ^[[38;5;
和 m
)
同样, Normal
语法 88 色背景色 80 转换为 256 色值 232 并产生错误 ^[[4232m
序列为 xterm
(但会产生更合理的 ^[[48;5;232m
在下面 xterm-256color
).
其他提示
^[[3231m
看起来很像颜色定义完成/出错:
^[[32;31m
无论如何,这没有多大意义。
它是否以特定值发生 $TERM
或任何价值?什么 Vim 版本?我们所说的终端模拟器是什么?