VT100转义序列去除已经打印的换行符?

VT100转义序列去除已经打印的换行符?

问题描述:

有VT100转义序列的组合,让我的C程序打印类似:VT100转义序列去除已经打印的换行符?

等待......

到控制台,在这样一种方式,点一个接一个地出现?从本质上讲,我想要一个让我插入额外''的命令。在已经发送的换行符前面。

我正在寻找一个快速的Linux单线程;它不必是便携式的。对于这个ncurses是矫枉过正的。

+0

你不能* *相当撤消换行,除非你的影响碰巧知道前一行是多久;终端可以将光标向上移动一行,但不知道向前移动多远。 –

+2

你有没有考虑过不输出换行符?十分简单。 –

一个简单的方法来做到这一点是使用转义序列

"\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