JSh*_*hoe 4 ruby io command-line
我希望能够输出两行到终端,然后删除它们.我知道你可以做一件事
print "\b"*whatever
Run Code Online (Sandbox Code Playgroud)
但我想做更像这样的事情:
[1, 2, 3, 4, 5].each do |item|
# code to delete the previous two lines
print item.to_s + "\nHello!"
end
Run Code Online (Sandbox Code Playgroud)
输出将快速完成以下所有操作
1
Hello!
2
Hello!
3
Hello!
4
Hello!
5
Hello!
Run Code Online (Sandbox Code Playgroud)
但到最后,最后的迭代就是你所看到的.
Mar*_*eed 11
好吧,对于简单的事情,如果你可以假设一个ANSI兼容的终端(通常是一个不错的选择),你可以直接输出ANSI代码.例如,
5.times do |item|
print "\r" + ("\e[A\e[K"*3) if item > 0
puts "#{item+1}\nHello!"
end
Run Code Online (Sandbox Code Playgroud)
当\r光标移动到线的起点,\e[A将光标上移一行,并\e[K从光标位置到行的末尾被清除.如果屏幕上不需要任何其他内容,您也\e[J可以在光标所在的位置发送; 一直清除到屏幕的末尾.
对于更复杂的东西,你可以先看看Highline gem.
| 归档时间: |
|
| 查看次数: |
2009 次 |
| 最近记录: |