我正在编写一个非常简单的小型控制台应用程序,我正在使用一些ANSI escape sequences来获得更好的输出。
我想要做的就是这样。有一个带有名称的标题,然后在下面,程序运行时会打印几行。打印每一行时,我想用进度表更新标题行。例如:
My header row [ 0/5 ]
-------------------------------------
然后经过一些处理
My header row [ 1/5 ]
-------------------------------------
here is some output
...
My header row [ 2/5 ]
-------------------------------------
here is some output
the output could
be over several
lines
我尝试使用保存游标位置代码( ESC + [s
),然后使用 ESC + [u
恢复该位置,但是只能恢复列,而不是行。
对于某些背景,这是一个Node.JS程序。我简要地看了一下node-ncurses,然而这个任务看起来有点过分(?)
答案 0 :(得分:4)
当您在屏幕的最后一行打印并且必须向下滚动时,会出现此问题。文本滚动不会更新保存的光标位置。您需要检测到某些滚动发生(我不知道如何)并采取相应的操作,如发送序列在Esc [u序列之后向上移动光标以便转到原始位置。
再见.-