是否可以在提供STDIN后获取每个char(无需等待返回键)?
答案 0 :(得分:60)
使用Ruby 1.9.3的新getch
方法可以实现这一点:
require 'io/console'
input = STDIN.getch
文档(核心):http://ruby-doc.org/core-2.3.0/IO.html#class-IO-label-io-2Fconsole
Docs(Lib):http://ruby-doc.org/stdlib-2.3.0/libdoc/io/console/rdoc/IO.html#method-i-getch
答案 1 :(得分:4)
是的,有很多种方法可以做到这一点,除了宝石之外,你可以直接使用terminfo通过gem来操作termios,ncurses或stty程序。
tty_param = `stty -g`
system 'stty raw'
a = IO.read '/dev/stdin', 1
system "stty #{tty_param}"
print a
答案 2 :(得分:1)
使用Highline gem:
require "highline/system_extensions" # gem install highline
include HighLine::SystemExtensions
print "Enter one character: "
char = get_character
puts char.chr
来自JEG II's blog的。
答案 3 :(得分:1)
对于非阻止解决方案,请参阅我对https://stackoverflow.com/q/8274275/190135
的回答“如何在没有按回车的情况下获取红宝石中的单个角色”