ANSI 转义序列:保存和恢复行位置

nic*_*ckf 6 terminal command-line-interface ansi-colors

我正在编写一个非常简单的小控制台应用程序,并且正在尝试一些ANSI 转义序列以获得更好的输出。

我想做的就是这样的事情。有一个带有名称的标题,然后在程序运行时,在下面打印几行。当打印每一行时,我想用进度表更新标题行。例如:

My header row                 [ 0/5 ]
-------------------------------------
Run Code Online (Sandbox Code Playgroud)

然后经过一些处理

My header row                 [ 1/5 ]
-------------------------------------
here is some output
Run Code Online (Sandbox Code Playgroud)

...

My header row                 [ 2/5 ]
-------------------------------------
here is some output
the output could
be over several
lines
Run Code Online (Sandbox Code Playgroud)

我尝试使用保存光标位置代码(ESC+ [s),然后使用ESC+恢复该位置[u,但是这只恢复,而不恢复行。

对于一些背景知识,这是一个 Node.JS 程序。我简要地了解了node-ncurses,但是对于这个任务来说似乎有点矫枉过正(?)

小智 5

这是在屏幕最后一行打印并且必须向下滚动时出现的问题。文本的滚动不会更新已保存的光标位置。您需要检测到发生了一些滚动(我不知道如何)并采取相应的操作,例如发送序列,在 Esc[u 序列之后向上移动光标,以便转到原始位置。

再见。-