【发布时间】:2011-11-09 22:24:32
【问题描述】:
是否可以从 STDIN 中获取每个字符(无需等待返回键)?
【问题讨论】:
-
stdin 不一定(甚至通常)是 tty。
标签: ruby
是否可以从 STDIN 中获取每个字符(无需等待返回键)?
【问题讨论】:
标签: ruby
这可以通过 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
文档(库):http://ruby-doc.org/stdlib-2.3.0/libdoc/io/console/rdoc/IO.html#method-i-getch
【讨论】:
exit if input=="\u0018" or input=="\u0003"
是的,有很多方法可以做到这一点,除了 gems,您还可以通过 gems 直接使用 terminfo 操作 termios、ncurses 或 stty 程序。
tty_param = `stty -g`
system 'stty raw'
a = IO.read '/dev/stdin', 1
system "stty #{tty_param}"
print a
【讨论】:
使用Highline gem:
require "highline/system_extensions" # gem install highline
include HighLine::SystemExtensions
print "Enter one character: "
char = get_character
puts char.chr
【讨论】: