不确定的IRB完成行为?

时间:2012-10-28 12:36:02

标签: ruby irb ruby-1.9.3

我在irb中发现了一个错误,或者我在这里遗漏了什么?

  • 当irb在没有额外初始化的情况下运行并且交互式加载完成模块时,一切都按预期工作:
irb> 'abc'.str<TAB pressed>
irb> 'abc'.strip
irb> 'abc Def'.str<TAB pressed>
irb> 'abc Def'.strip
  • 但是,当使用irb -f -r irb/completionirb运行 .irbrc 确实包含单一行require 'irb/completion'时,奇怪的事情开始发生:
irb> 'abc'.str<TAB pressed>
irb> 'abc'.strip
irb> 'abc dEf'.str<TAB pressed>
dEf'.strftime  dEf'.string    dEf'.strip     dEf'.strip!
irb> 'abc Def'.str<TAB pressed>
<no possible completions are displayed>

字符串中的空格和空格后面的大写字母会以某种方式破坏完成代码,但前提是非交互式加载完成模块!

Ruby 1.9.3p286
Irb 0.9.6
Linux x86_64

1 个答案:

答案 0 :(得分:0)

默认情况下,irb未启用tab completion

上面的第一组irb交互示例正在运行,因为您已通过其他方式启用了该功能。很可能在irb上下文中加载了wirble gembond gem或其他类似的gem。

将〜/ .irbrc文件重命名为其他内容,以便它不会加载到irb中,然后再试一次。选项卡完成不起作用。

我使用'abc Def'.str确认了标签完成行为。似乎是irb选项卡完成功能中的错误。

简要介绍code for irb tab completion,我还没弄清楚为什么会这样。 : - )