本文简要介绍ruby语言中 Readline.readline
的用法。
用法
readline(prompt = "", add_hist = false) → string or nil
显示prompt
并通过行编辑读取输入的行。如果add_hist
为真,则输入的行将添加到历史记录中。
当输入的行为空且用户输入 EOF(在 UNIX 上按 ^D)时返回 nil。
如果满足以下条件之一,则引发 IOError
异常。
-
标准输入已关闭。
-
标准输出已关闭。
此方法支持线程。等待输入行时切换线程上下文。
输入行时支持行编辑。提供 VI 和 Emacs 编辑模式。默认为 Emacs 编辑模式。
注意:在等待输入行时,用户按下“^C”后终止 ruby 解释器并且不返回终端状态。举3个例子来避免它。
-
返回终端状态后按 ^C 捕获
Interrupt
异常:require "readline" stty_save = `stty -g`.chomp begin while buf = Readline.readline p buf end rescue Interrupt system("stty", stty_save) exit end end end
-
返回终端状态后按 ^C 捕获 INT 信号:
require "readline" stty_save = `stty -g`.chomp trap("INT") { system "stty", stty_save; exit } while buf = Readline.readline p buf end
-
忽略按 ^C:
require "readline" trap("INT", "SIG_IGN") while buf = Readline.readline p buf end
可以用 Readline::HISTORY
常数作如下。如果输入的行为空或与上一行相同,则不记录到历史记录中。
require "readline"
while buf = Readline.readline("> ", true)
# p Readline::HISTORY.to_a
Readline::HISTORY.pop if /^\s*$/ =~ buf
begin
if Readline::HISTORY[Readline::HISTORY.length-2] == buf
Readline::HISTORY.pop
end
rescue IndexError
end
# p Readline::HISTORY.to_a
print "-> ", buf, "\n"
end
相关用法
- Ruby Readline.completion_proc =用法及代码示例
- Ruby Readline.completion_case_fold用法及代码示例
- Ruby Readline.point用法及代码示例
- Ruby Readline.completion_append_character =用法及代码示例
- Ruby Readline模块用法及代码示例
- Ruby Regexp named_captures()用法及代码示例
- Ruby Recorder类用法及代码示例
- Ruby Regexp to_s()用法及代码示例
- Ruby Regexp.eql?用法及代码示例
- Ruby Regexp hash()用法及代码示例
- Ruby Resolution.new用法及代码示例
- Ruby Regexp.fixed_encoding?用法及代码示例
- Ruby Resolver.resolve用法及代码示例
- Ruby Regexp类用法及代码示例
- Ruby Regexp.options用法及代码示例
- Ruby Refinement.import_methods用法及代码示例
- Ruby Regexp inspect()用法及代码示例
- Ruby Regexp.inspect用法及代码示例
- Ruby Regexp.names用法及代码示例
- Ruby Resolution.require_nested_dependencies_for用法及代码示例
- Ruby Requirement.parse用法及代码示例
- Ruby Regexp source()用法及代码示例
- Ruby Resolution.possibility用法及代码示例
- Ruby Regexp match()用法及代码示例
- Ruby Regexp.rxp =~ str用法及代码示例
注:本文由纯净天空筛选整理自ruby-lang.org大神的英文原创作品 Readline.readline。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。