使用控制台字符删除多个控制台行

3

我知道在控制台字符中,你可以使用\r将光标返回到当前行的开头,或者\b删除一个字符。但是我想知道如何使用控制字符覆盖多行。

我在控制台上打印了一个点阵:

. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .

然后回到第一个字符并重新绘制。
. . . . . . . .
. . . 0 . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .

我不确定需要翻译成什么语言,所以希望使用文字来解决。


一个选择是使用 curses 库,在终端上提供全屏窗口。Curses库有C、Python、Java和其他语言的版本。 - tdelaney
查看ASCII控制码列表,我没有看到任何可以用来将光标向上移动一行的内容。 - Kevin
1个回答

0

(以下仅适用于您不在Swing JPanel或类似的输出中自行呈现)

请注意,您可以从控制台输出单元获得的仿真级别非常有限。通常期望使用Ctrl-H进行退格,使用Ctrl-M将光标返回到行的开头。除此之外,任何要求均需设置附加要求。

历史上,这是通过发送ANSI转义序列(物理VT100终端的近亲)来完成的,然后解释这些序列以移动光标、清除监视器的部分并切换颜色。您需要类似的内容来在输出设备中实现此功能。对于Windows中的CMD.EXE,请参阅How to make win32 console recognize ANSI/VT100 escape sequences? 进行建议。Linux和OS X终端模拟器支持此功能。

然后,您可以自己生成转义序列 - 对于简单的需求而言相对容易 - 或委托给curses / ncurses库,以实现您所需的功能。


好的,我试图不使用curses,因为它对我想要的东西来说过于复杂了,我只需要使用一行代码。 - Luke Moll

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接