Terminal 理解CUB-ansi转义序列

Terminal 理解CUB-ansi转义序列,terminal,ansi-escape,Terminal,Ansi Escape,我不明白为什么有时候小熊序列可以继续通过前一行,而有时候不能。文件显示这不是真实的情况。。。 例如,我有一个屏幕,屏幕上有80列24行的空格 我在第4列第3行的位置,可以设置转义序列:\033[3;4H 我按顺序\033[10D]向左移动光标10次 wich将把我放在位置:第2行第76列 这么说成功了?!! 但有时情况并非如此 请救救我!:) 我可以减少这种情况,但这就是我看到的: 我正在编写一个vt*仿真器,所有功能都很好。我可以启动emacs/vim和其他功能,但随后我在putty中使用“

我不明白为什么有时候小熊序列可以继续通过前一行,而有时候不能。文件显示这不是真实的情况。。。

例如,我有一个屏幕,屏幕上有80列24行的空格

我在第4列第3行的位置,可以设置转义序列:\033[3;4H

我按顺序\033[10D]向左移动光标10次 wich将把我放在位置:第2行第76列

这么说成功了?!! 但有时情况并非如此

请救救我!:)

我可以减少这种情况,但这就是我看到的:

我正在编写一个vt*仿真器,所有功能都很好。我可以启动emacs/vim和其他功能,但随后我在putty中使用“script”命令启动了vttest,以记录每个键入的字符和序列。如下所示:

# script test
Script started, file is test
# vttest
...
例如,当我在putty中执行“cat测试”时,它会像我一样重放所有东西。当我使用模拟器玩它时,我能够解析和分析它们提供的每个转义序列,但显示方式不同。

上的措辞相当清楚:

If an attempt is made to move the cursor to the left of the left margin,
the cursor stops at the left margin.
在一篇文章中,有人指出PuTTY尊重(非VT100)功能
bw
,该功能引用了ncurses手册:


如您所见,PuTTY在页边距处的换行行为与VT100s不同。ncurses有一个名为“”的终端条目,这仅仅是因为PuTTY与所有其他终端不同,足以使使用其他终端造成麻烦。

谢谢您的回答。这就解释了问题。写入最后一列时可能会出现另一种情况:如果您位于第80列,并且您写入了一个可打印的字符,则光标应位于新行并写入另一个字符这一个将在下一行(经典)。但如果你做一个幼崽序列,它将在第一行向左移动而不会下降。
   auto_left_margin              bw         bw        cub1 wraps from col‐
                                                      umn 0 to last column