【发布时间】:2010-11-06 05:31:13
【问题描述】:
我正在编写一个过滤器(在一个用于终端输出的管道中),它有时需要“覆盖”刚刚发生的一行。它的工作原理是逐个字符地将标准输入传递给标准输出,直到达到\n,然后调用特殊行为。我的问题是如何返回到行首。
我首先想到的是使用\r 或ANSI 序列\033[1G。但是,如果行长到足以在终端上换行(并因此导致它滚动),这些只会将光标移回当前 physical 行。
我的第二个想法是跟踪行的长度(自上一个\n 以来传递的字符数),然后多次回显\b。但是,如果该行包含控制字符或转义序列(可能还有 Unicode?),就会出错。
没有搜索所有特殊序列并使用它来调整我的字符数,有没有简单的方法来实现这一点?
【问题讨论】: