2011-10-11 83 views
2

有VT100轉義序列的組合,讓我的C程序打印類似:VT100轉義序列去除已經打印的換行符?

等待......

到控制檯,在這樣一種方式,點一個接一個地出現?從本質上講,我想要一個讓我插入額外''的命令。在已經發送的換行符前面。

我正在尋找一個快速的Linux單線程;它不必是便攜式的。對於這個ncurses是矯枉過正的。

+0

你不能* *相當撤消換行,除非你的影響碰巧知道前一行是多久;終端可以將光標向上移動一行,但不知道向前移動多遠。 –

+2

你有沒有考慮過不輸出換行符?十分簡單。 –

回答

1

一個簡單的方法來做到這一點是使用轉義序列

"\x1b[A" 

移動光標一行。然後,重新打印「Waiting ...」消息,比上一次多一個點。

0

您可以使用添加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