终端动画 - 正在清除屏幕右边的方法?

时间:2014-05-26 07:00:10

标签: java macos scala terminal

我有一个我在Mac OS X终端上显示的ASCII游戏板,需要经常更新。是否有方便的方法来擦除或覆盖终端中先前打印的内容?或者我是否需要每次都清除屏幕并重新打印电路板? (寻找使用Java或Scala的解决方案)

1 个答案:

答案 0 :(得分:1)

OS X终端程序模拟颜色xterm(环境变量TERM显示默认值xterm-color),其本身被定义为模拟基本上使用/定义的DEC VT102/220 ANSI escape codes

如果您只想清除整个显示,则需要输出与CUP(光标更新)后跟ED(删除显示)对应的转义序列。在VT102上,您特别想使用:

<ESC>[H<ESC>[J

其中<ESC>是转义字符(ASCII 27)。

要使用备用屏幕缓冲区(如vimemacs中所示),您需要发送用于启动备用屏幕缓冲区的代码开始:

<ESC>[?1049h

然后在完成后更改回正常的屏幕缓冲区:

<ESC>[?1049l

使用备用屏幕缓冲区时,您将无法回滚,并且不会影响回滚或正常屏幕内容。恢复正常屏幕缓冲区后,您将返回原始终端上下文,包括所有现有屏幕内容并向后滚动。