理解 CUB ansi 转义序列
understanding CUB ansi escape sequence
我不明白为什么有时允许 CUB 序列继续通过上一行,有时却不允许。文档告诉它不是,但在真实情况下......
http://vt100.net/docs/vt100-ug/chapter3.html#CUB
例如,我的屏幕上有 80 列和 24 行的空格。
我在第3行第4列可以设置转义序列的位置:\033[3;4H
我将光标向左移动10次,顺序为\033[10D
这将使我处于位置:第 2 行第 76 列
所以有效吗?!!
有时它不会
请救救我! :)
我可以减少这种情况,但这是我看到的地方:
我正在编写一个 vt* 模拟器,一切正常。我可以启动 emacs/vim 和其他程序,但随后我使用 "script" 命令在 putty 中启动了 vttest 来记录每个键入的字符和序列。像这样:
# script test
Script started, file is test
# vttest
...
例如,当我在 putty 中执行 "cat test" 时,它会像我一样重播所有内容。当我用我的模拟器玩它时,我能够解析和分析他们提供的每个转义序列,但显示不一样。
VT100.net 上的措辞相当清楚:
If an attempt is made to move the cursor to the left of the left margin,
the cursor stops at the left margin.
在 recent discussion, someone pointed out that PuTTY honors a (non-VT100) capability bw
, which quoting from ncurses' terminfo 手册中:
auto_left_margin bw bw cub1 wraps from col‐
umn 0 to last column
如您所见,PuTTY 在边缘处环绕的行为与 VT100 不同。 ncurses 有一个名为“putty”的终端条目,仅仅是因为 PuTTY 与所有其他终端的不同足以让使用其他终端变得麻烦。
我不明白为什么有时允许 CUB 序列继续通过上一行,有时却不允许。文档告诉它不是,但在真实情况下...... http://vt100.net/docs/vt100-ug/chapter3.html#CUB
例如,我的屏幕上有 80 列和 24 行的空格。
我在第3行第4列可以设置转义序列的位置:\033[3;4H
我将光标向左移动10次,顺序为\033[10D 这将使我处于位置:第 2 行第 76 列
所以有效吗?!! 有时它不会
请救救我! :)
我可以减少这种情况,但这是我看到的地方:
我正在编写一个 vt* 模拟器,一切正常。我可以启动 emacs/vim 和其他程序,但随后我使用 "script" 命令在 putty 中启动了 vttest 来记录每个键入的字符和序列。像这样:
# script test
Script started, file is test
# vttest
...
例如,当我在 putty 中执行 "cat test" 时,它会像我一样重播所有内容。当我用我的模拟器玩它时,我能够解析和分析他们提供的每个转义序列,但显示不一样。
VT100.net 上的措辞相当清楚:
If an attempt is made to move the cursor to the left of the left margin,
the cursor stops at the left margin.
在 recent discussion, someone pointed out that PuTTY honors a (non-VT100) capability bw
, which quoting from ncurses' terminfo 手册中:
auto_left_margin bw bw cub1 wraps from col‐
umn 0 to last column
如您所见,PuTTY 在边缘处环绕的行为与 VT100 不同。 ncurses 有一个名为“putty”的终端条目,仅仅是因为 PuTTY 与所有其他终端的不同足以让使用其他终端变得麻烦。