Terminal ANSI转义序列保存/恢复光标位置支持
是否有任何已知的终端支持光标键向上、向下、向前和向后的ANSI转义序列:Terminal ANSI转义序列保存/恢复光标位置支持,terminal,ansi-escape,Terminal,Ansi Escape,是否有任何已知的终端支持光标键向上、向下、向前和向后的ANSI转义序列: CSI n A Cursor Up CSI n B Cursor Down CSI n C Cursor Forward CSI n D Cursor Back 但是不支持保存光标位置和恢复光标位置转义序列吗 CSI s Save Cursor Position CSI u Restore Cursor Position 真正的VT100(或VT220)无法识别这
CSI n A Cursor Up
CSI n B Cursor Down
CSI n C Cursor Forward
CSI n D Cursor Back
但是不支持保存光标位置和恢复光标位置转义序列吗
CSI s Save Cursor Position
CSI u Restore Cursor Position
真正的VT100(或VT220)无法识别这些保存/恢复光标位置的控制序列。他们使用(如xterm列表中所述)
这些是terminfo中的sc
和rc
功能;您可能会看到使用
infocmp vt100
infocmp vt220
CSI s
和CSI u
的来源可能来自ansi.sys
(请参见终端数据库条目),尽管始终可以使用较旧的来源。使用ESC 7
和ESC 8
似乎更安全。iTerm 2可识别CSI s
和CSI u
序列,但macOS上的Terminal.app无法识别。同样,在录制时无法识别它们。如果在ESC 7
或ESC 8
之后打印了一些文本,该怎么办?一些字符似乎使终端误以为7
实际上是一个与命令P完全不同的参数(例如,如果发送\033[7Hello
,它实际上会将光标移动到第7列并在那里打印ello
,因为初始的H
是“移动光标”命令。7
之后是否有终止转义序列的方法,以便后面的文本不会被解释为命令?ESC 7
与ESC[7
不同,因为后者(前两个字符)是标准化的,而前者依赖于终端。第二个之后的任何控制字符都将终止序列(至少在符合标准的终端上)。有趣的是,我不知道其中有两个!:o而且确实ESC 7
对我有效。尽管另一个(标准化的一个,正如你所说的)同样有效。是否有任何控制字符可以在不干扰输出的情况下终止序列?(某种“不做任何事情”的转义序列)
infocmp vt100
infocmp vt220