打开主菜单

更改

ANSI转义序列

删除94字节2019年10月7日 (一) 18:06
无编辑摘要
==转义序列==
序列具有不同的长度。所有序列都以ASCII字符<code>'''[[退出键|ESC]]'''</code>(27 / [[十六进制]] 0x1B)开头,第二个字节则是0x40–0x5F(ASCII <code>@A–Z[\]^_</code>)范围内的字符。<ref name="ecma48"/>{{Rp|5.3.a}}
标准规定,在8位环境中,这两个字节的序列可以合并为0x80-0x9F范围内的单个字节(详情请参阅[[C0与C1控制字符#C1控制字符集|C1控制字符集]])。但是,在现代设备上,这些代码通常用于其他目的,例如[[UTF-8]]的一部分或[[CP-1252]]字符,因此并不使用这种合并的方式。
| ESC [ || 0x9b || CSI - 控制序列导入器(Control Sequence Introducer) || 大部分有用的序列,请参阅下一节。结束于ASCII 64到126 (<code>@</code>到<code>~</code>/十六进制0x40到0x7E).<ref name="ecma48"/>
|- id=ST
| ESC \ || 0x9c || ST – 字符串终止(String Terminator) || 终止其他控件(包括APC,DCS,OSC,PM和SOS)中的字符串。<ref name="ecma48">{{cite web |url=http://www.ecma-international.org/publications/standards/Ecma-048.htm |title=Standard ECMA-48: Control Functions for Coded Character Sets |edition=Fifth |date=June 1991 |institution=[[Ecma International]]}}</ref>{{Rp|8.3.143}}
|- id=OSC
| ESC ] || 0x9d || OSC – 操作系统命令(Operating System Command) || 启动操作系统使用的控制字符串。OSC序列与CSI序列相似,但不限于整数参数。通常,这些控制序列由ST终止<ref name="ecma48"/>{{Rp|8.3.89}}。在xterm中,它们也可能被BEL终止<ref name="xtc"/>。例如,在xterm中,窗口标题可以这样设置:<code>OSC 0;this is the window title BEL</code>。
|- id=SOS
| ESC X || 0x98 || SOS – 字符串开始(Start of String) || rowspan=3 | 引用由ST终止的一串文本的参数。这些字符串控制序列的用途由应用程序<ref name="ecma48"/>{{Rp|8.3.2,8.3.128}}或私有规则来定义<ref name="ecma48"/>{{Rp|8.3.94}}。这些函数没有实现,参数被xterm忽略<ref name="xtc"/>。
|- id=PM
| ESC ^ || 0x9e || PM – 私有消息(Privacy Message)
{| class="wikitable"
|+ CSI序列在<code>ESC [</code>之后各个组成部分的字符范围<ref name="ecma48"/>{{Rp|5.4}}
! 组成部分 !! 字符范围 !! ASCII
|-
|}
所有常见的序列都只是把参数用作一系列分号分隔的数字,如<code>1;2;3</code>。缺少的数字视为0(如<code>1;;3</code>相当于中间的数字是0,<code>ESC[m</code>这样没有参数的情况相当于参数为0)。某些序列(如CUU)把0视为1,以使缺少参数的情况下有意义{{Rp|F.4.2}}。这样没有参数的情况相当于参数为0)。某些序列(如CUU)把0视为1,以使缺少参数的情况下有意义。
一部分字符定义是“私有”的,以便终端制造商可以插入他们自己的序列而不与标准相冲突。包括参数字节<code><=>?</code>的使用,或者最终字节0x70–0x7F(<code><nowiki>p–z{|}~</nowiki></code>)例如VT320序列<code>CSI?25h</code>和<code>CSI?25l</code>的作用是打开和关闭光标的显示。