java - 终端动画 - 清除屏幕是正确的方法吗?

标签 java macos scala terminal

我有一个 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)。

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

<ESC>[?1049h

完成后切换回正常屏幕缓冲区:

<ESC>[?1049l

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

关于java - 终端动画 - 清除屏幕是正确的方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23864446/

相关文章:

java - 嵌套逆变类型中的类型不匹配

Android adb (OSX Lion) 无法识别 Galaxy Nexus、Jelly Bean

java - CustomTreeItem 使用节点而不是字符串

scala - 为什么在http服务器和数据库之间使用Actors

scala - 是否可以为顶点中的标签建立索引

java - 正则表达式返回给定域的所有子域

java - 在android中实现应用程序范围的缓存

java - 如何在OrientDB中通过Graph API(Tinkerpop Blueprints)按边检索顶点?

c++ - 如果我在 Mac 上使用 ofstream 写入文件,我的文件存储在哪里?

MySQL 错误 : Authentication plugin 'caching_sha2_password' cannot be loaded