【发布时间】:2011-11-19 21:53:30
【问题描述】:
我正在编写一个非常简单的小控制台应用程序,并且正在使用一些 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,但是对于这项任务来说似乎有点矫枉过正(?)
【问题讨论】:
-
您是否尝试过手动移动光标而不是使用存储/恢复?
-
@lordscarlet 我现在不记得了。我猜大概?我认为问题可能是我不知道要向上移动多少行,因为输出可能会跨越多行。
-
我建议始终使用 ncurses 或任何适合您上下文的相应库。这不是矫枉过正,这是正确的。 :-) 更重要的是,它将为您省去一堆麻烦,试图弄清楚以什么顺序使用什么代码来达到预期的效果。而且它是便携式的。除非无法避免,否则切勿对终端控制序列进行硬编码——最好通过 ncurses 使用 terminfo。
标签: terminal command-line-interface ansi-colors