".red someInput = gets while (regex =~ someInput).-6ren">
gpt4 book ai didi

ruby - 如何在进入 Ruby 后覆盖当前控制台行?

转载 作者:数据小太阳 更新时间:2023-10-29 08:45:05 25 4
gpt4 key购买 nike

我有这段代码:

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.flushSTDOUT.flush following this topic 运气不好

然后我意识到,如果我删除 gets 指令,它就可以工作。

获取后如何覆盖当前行?

最佳答案

覆盖当前行(打印 "\r")与 gets 一起工作得很好。问题是,gets 读取一行直到(包括)一个换行符。因此,是您按下 ENTER,将光标移动到下一行。然后下一行,已经是空的,由 \r 倒回。

在常规模式下无法移动到上一行。(请参阅评论)您需要使用较低级别的终端窗口访问。 curses 是一个流行的库。 Ruby 有它的绑定(bind)。我建议您从这篇博文(及其后续文章)开始:http://graysoftinc.com/terminal-tricks/random-access-terminal

关于ruby - 如何在进入 Ruby 后覆盖当前控制台行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31090782/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com