2012-04-22 71 views
5

在控制檯可以打印"\b"抹去這樣移動一個字符左側的控制檯

print "the last char is going to be erased\b" # the last char is going to be erased 

左光標(退格鍵)的性質如何只是移動一個位置到左邊,而不是擦除(左箭頭)?

回答

9

這取決於終端類型和連接,但通常可以假定ANSI光標移動,所以光標左是ESC +「[」 +「d」:

print "The cursor should be here:> <\e[D\e[D" 
readline 

更多信息參見http://ascii-table.com/ansi-escape-sequences.php

+1

Mark,我得到「光標應該在這裏:><←[D←[D」在標準的Windows 7控制檯中,轉義序列顯然不被解釋,但\ b是儘管它必須跟着另一個字符。例如「打印」光標應該在這裏:> \ b「'給出」光標應該在這裏:「 – peter 2012-04-22 01:53:22

+1

Windows不解釋ANSI轉義。我不認爲我可以在Windows機器上開發;我感覺自己不斷地跳過籃球。 – d11wtq 2012-04-22 09:13:03

+0

@Mark:它有挑戰,但您的客戶需要能夠運行您的代碼,並且由於大多數客戶擁有Windows,這是最簡單的方法。關於ansi的東西,有寶石應該使這成爲可能,但我不願意用這些簡單的工作。畢竟,如果\ b工作(顯然沒有ansi),爲什麼不應該那樣移動光標? – peter 2012-04-22 12:07:21