【问题标题】:Erase multiple console lines with console characters使用控制台字符擦除多个控制台行
【发布时间】:2014-09-04 14:21:34
【问题描述】:

所以我知道,使用控制台字符,您可以将光标返回到当前行的开头 (\r) 或仅一个字符 (\b) 以进行覆盖。我想知道的是我用控制字符覆盖了多行。

我有一个点网格,打印到控制台:

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

然后回到第一个字符重绘它

. . . . . . . .
. . . 0 . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .

不确定这将使用哪种语言,这就是为什么我更喜欢使用字符的解决方案。

【问题讨论】:

  • 一种选择是使用 curses 库,它可以在终端上为您提供全屏窗口。有适用于 C、Python、java 和可能的其他语言的 curses 库版本。
  • 看着ASCII control code list,我没有看到任何可以用来将光标向上移动一行的东西。

标签: java python ascii console-application control-characters


【解决方案1】:

(以下所有内容仅适用于您自己不在 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 库来实现您的需要。

【讨论】:

  • 好的,我试着不使用诅咒,这对我想要的来说太过分了,我只使用一行
猜你喜欢
  • 1970-01-01
  • 2012-07-21
  • 2010-12-03
  • 2012-09-27
  • 1970-01-01
  • 2015-11-21
  • 2015-08-23
  • 1970-01-01
  • 2010-09-30
相关资源
最近更新 更多