c"是什么?-6ren"> c"是什么?-在 bash 中输入“vi [FILENAME]”后,我得到以下结果: ....\r\"gu1.txt\" 16L, 87C ESC[>cESC[1;1H 111\r\n1112 ..... 此行中标-6ren">
gpt4 book ai didi

bash - ANSI 转义码序列 "ESC[>c"是什么?

转载 作者:行者123 更新时间:2023-12-04 14:42:18 25 4
gpt4 key购买 nike

在 bash 中输入“vi [FILENAME]”后,我得到以下结果:

....\r\"gu1.txt\" 16L, 87C ESC[>cESC[1;1H 111\r\n1112 .....

此行中标记的第一个文本是 vi 结果的行数和列数之后的文件名。

第二个文本包含两个转义序列,我不明白它们的含义:ESC[>cESC[1;1H .

最后一个文本包括作为 vi 的结果显示的文本,即文件的内容。

你能解释一下什么是ANSI转义码序列ESC[>c以及它与紧随其后的转义码序列的关系 ESC[1;1H ?

提前致谢

最佳答案

根据 XTerm Control Sequences,它是“发送设备属性(辅助 DA)” :

CSI > Ps c

Send Device Attributes (Secondary DA).Ps = 0 or omitted -> request the terminal's identificationcode. The response depends on the decTerminalID resource setting. It should apply only to VT220 and up, but xterm extendsthis to VT100.


控制(适用于 VT220 等)记录在 vt100.net 上的 DEC 手册中。
点发送 设备属性是一个程序正在向终端询问一些事情。终端发回信息,即响应。这恰好是一个看起来像请求的字符串(如果终端没有真正连接到主机,这很有帮助)。发送请求的程序必须读取响应,否则你会在终端上看到奇怪的字符——响应的未读部分。
在您关于 vi 的问题的上下文中,vim 使用它来确定 的版本xterm 它可能正在使用。答案在终端的响应中提供:

and Pv is the firmware version (for xterm, this was originallythe XFree86 patch number, starting with 95). In a DEC terminal, Pc indicates the ROM cartridge registration number and isalways zero.


vim 中使用它的特殊功能称为“ termresponse”。如果您在假装是 xterm 但实际上不是 xterm 的终端上使用它,那么您将在终端上看到杂散字符,如 Why is vim starting in delete mode? 的回答中所述。 .然而,任何“VT100 兼容”的终端仿真器都必须处理这个问题。
以下 ESC[1;1H与辅助 DA 无关,而是为初始化完成的标准 (ISO-6429/ ECMA-48) 光标定位(并且您会在终端中运行的任何文本编辑器中看到类似的内容)。通常它以较短的形式发送, ESC[H , 因为数字默认为 1 . ESC[>c是私有(private)模式序列,如 > 所示特点。 ECMA-48 中描述了那个(以及许多其他细节)。 DEC 的终端遵循标准,并进行了扩展。终端控制的“ANSI”标准很久以前就被归入到 ISO 标准中,并且(仍然)很久以前相应的 ANSI 标准被撤销。
您不太可能遇到用于与硬件终端通信的这个序列,因为它(在 1990 年代 xterm 开始使用它之前)主要由 DEC 的(开放)VMS 系统用于确定连接到它的终端类型。

关于bash - ANSI 转义码序列 "ESC[>c"是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29939026/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com