VT100转义序列去除已经打印的换行符?
问题描述:
有VT100转义序列的组合,让我的C程序打印类似:VT100转义序列去除已经打印的换行符?
等待......
到控制台,在这样一种方式,点一个接一个地出现?从本质上讲,我想要一个让我插入额外''的命令。在已经发送的换行符前面。
我正在寻找一个快速的Linux单线程;它不必是便携式的。对于这个ncurses是矫枉过正的。
答
一个简单的方法来做到这一点是使用转义序列
"\x1b[A"
移动光标了一行。然后,重新打印“Waiting ...”消息,比上一次多一个点。
答
您可以使用添加ESC [K(清除行尾)以ESC [A(上一行),并打印新的一行文字
一个例子的Python:
import random, time
for _ in range(100):
print('\x1b[A\x1b[Kthis will print each line cleanly: %d' %(random.randint(0, 100000)))
time.sleep(0.1)
如果你真的想要整洁的事情,使用ESC7(保存光标)和ESC8(恢复光标)
然后,你写你的线,并在它结束时使用ESC7。在打印语句的开头,您使用ESC8。注意,除非你关闭自动换行符,否则不是工作在你的tty的底部。它将工作在所有线路上但是底部。
import random, time
print('this will print each dot cleanly: \x1b7')
for _ in range(10):
print('\x1b8.\x1b7')
print('print more foo: %d' %_)
time.sleep(0.1)
的shell脚本(bash)的,你会用printf“......”没有\ n或呼应-n
你不能* *相当撤消换行,除非你的影响碰巧知道前一行是多久;终端可以将光标向上移动一行,但不知道向前移动多远。 –
你有没有考虑过不输出换行符?十分简单。 –