我有这段代码:
def wait_for_input regex
print "> ".red
someInput = gets
while (regex =~ someInput).is_a? NilClass do
print "\r> ".red
someInput = gets
STDOUT.flush
end
someInput
end
回车符应该覆盖控制台中的当前行,但是却不会覆盖“>”进入新的界限。
我尝试删除字符串中的颜色(图书馆colorize
)并撰写$stdout.flush
或STDOUT.flush
following this topic 但没有运气
然后我意识到,如果我删除 gets
指令,就可以了。
如何在gets
之后覆盖当前行?
答案 0 :(得分:3)
覆盖当前行(打印 public static void main(String args[])
{
Outer obj=new Outer();
Outer.Inner inner = obj.new Outer.Inner();
}
)与"\r"
一起正常工作。问题是,gets
读取一行直到(并包括)换行符。因此,按gets
,将光标移动到下一行是你。接下来,已经为空的行由ENTER
重新启动。
在常规模式下无法移至上一行。(请参阅注释)您需要使用较低级别的终端窗口访问。 \r
是一个受欢迎的图书馆。 Ruby有绑定。我建议你从这篇博文(及其后续内容)开始:http://graysoftinc.com/terminal-tricks/random-access-terminal