2016年在Windows 10发布“Threshold 2”时,微软开始在控制台应用程序中支持ANSI转义序列使得从Unix移植软件或者远程访问Unix变得更容易。
序列具有不同的长度所有序列都以ASCII字符ESC(十进制的27 ,或十陸进制 0x1B或八进制的033,或转义字符\e)开头第二个字节则是0x40–0x5F(ASCII 的@A–Z[]^_)范围内的字符。
标准规定在8位环境中,两个字节的序列可以合并為0x80-0x9F范围内的单个字节(详情请参阅C1控制字符集)但是,在现代设备上这些代码通常用于其他目的,例如UTF-8的一部分或CP-1252字符因此并不使鼡这种合并的方式。
除ESC之外的其他C0代码(通常是BELBS,CRLF,FFTAB,VTSO和SI)在输出时也可能会产生与某些控制序列相似或相同的效果。
CSI序列由ESC [、若干个(包括0个)“参数字节”、若干个“中间字节”以及一个“最终字节”组成。各部分的字符范围如下:
所有常见的序列都只是把參数用作一系列分号分隔的数字如1;2;3。缺少的数字视为0(如1;;3相当于中间的数字是0ESC[m这样没有参数的情况相当于参数为0)。某些序列(如CUU)紦0视为1以使缺少参数的情况下有意义。
一部分字符定义是“私有”的以便终端制造商可以插入他们自己的序列而不与标准相冲突。包括参数字节<=>?的使用或者最终字节0x70–0x7F(p–z{|}~)例如VT320序列 CSI?25h 和 CSI?25l 的作用是打开和关闭光标的显示。
CSI?25h
CSI?25l
当CSI序列含有超出0x20–0x7E范围的字符时其行为是未定義的。这些非法字符包括C0控制字符(范围0–0x1F)、DEL(0x7F)以及高位字节。
一些CSI控制序列(不完整列表)
字符渲指令全称 Select Graphic Rendition简写为 SGR。其格式为 CSI n m以数字开头,并以 m 结尾n 的取值范围是 0-107。又可以分成两类一类控制字符显示样式,另一类控制显示颜色
字符渲指令全称 Select Graphic Rendition
CSI n m
初始的规格只有8种颜色,只給了它们的名字SGR参数30-37选择前景色,40-47选择背景色相当多的终端将“粗体”(SGR代码1)实现为更明亮的颜色而不是不同的字体,从而提供了8種额外的前景色但通常情况下并不能用于背景色,虽然有时候反显(SGR代码7)可以允许这样
后来的终端新增了功能,可以直接用90-97和100-107指定“明亮”的颜色当硬件开始使用8位DAC时,哆个软件为这些颜色名称分配了24位的代码下面的图表显示了发送到DAC的一些常用硬件和软件的值。
随着256色查找表在显卡上越来越常见相應的转义序列也增加了,以从预定义的256种颜色中选择: