2012-04-22 69 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