我有一个 ASCII 游戏板,正在 Mac OS X 终端中显示,并且需要经常更新。有没有一种方便的方法可以删除或覆盖终端中以前打印的内容?或者我每次都需要清屏并重新打印板子? (寻找使用 Java 或 Scala 的解决方案)
最佳答案
OS X 终端程序模拟颜色 xterm(环境变量 TERM
显示默认值 xterm-color
),它本身被定义为模拟 DEC VT102/220基本上使用/定义 ANSI escape codes .
如果您只想清除整个显示,则需要输出对应于 CUP
的转义序列。 (光标更新)后跟 ED
(删除显示)。在 VT102 上,您特别想要使用:
<ESC>[H<ESC>[J
哪里<ESC>
是转义字符 (ASCII 27)。
要使用备用屏幕缓冲区(如 vim
或 emacs
中所示),您需要在启动时发送用于启动备用屏幕缓冲区的代码:
<ESC>[?1049h
完成后切换回正常屏幕缓冲区:
<ESC>[?1049l
使用备用屏幕缓冲区时,您将无法向后滚动,并且不会影响向后滚动或正常屏幕内容。恢复正常的屏幕缓冲区后,您将返回到原始终端上下文,包括所有现有的屏幕内容并向后滚动。
关于java - 终端动画 - 清除屏幕是正确的方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23864446/