如何“倒带”终端上的行?

时间:2019-11-07 12:55:48

标签: php linux windows terminal command-line-interface

如果我在不进行换行的情况下输出了一堆文本,然后执行“ \ r”,则它将返回到当前行的第一个“列”,从而使我可以“覆盖”现有文本。这样就启用了各种“进度指示器”等等。

但是,如何“倒带”到上一行?还是几行?

我的一行信息经常用完空间,并且如果超出限制(在Windows上为120个字符),所有信息都会“分崩离析”,并开始输出换行符(或以换行的方式包装文本)似乎正在换行)。因此,我希望能够不断倒退多行,以便输出多行数据,这些数据会不断更新,就像使用“ \ r”技巧来记录一行一样。

例如:

This is the first line, which is quite long. It goes on for quite some time, so that it reaches 120 characters. Now it's
up. This is on a new line. Now I want to go back to the beginning of "This is the first line", on the previous row.

这有可能吗?毕竟,我们几十年来一直没有使用过纸张输出,所以希望它是...

1 个答案:

答案 0 :(得分:0)

我认为不可能通过简单的方法来实现。除非Windows控制台以参数ENABLE_VIRTUAL_TERMINAL_PROCESSING启动。在这种情况下,您可以使用ESC序列在控制台窗口上执行复杂的控制

https://docs.microsoft.com/en-us/windows/console/console-virtual-terminal-sequences

也请阅读第二个答案:

https://superuser.com/questions/413073/windows-console-with-ansi-colors-handling

大概描述了一种默认情况下如何在控制台窗口中启用ANSI处理的方法。

否则,您可以将输出限制为119个符号,或在控制台窗口属性中扩展控制台缓冲区的宽度。