2

我是在 irb 中发现错误还是我在这里遗漏了什么?

  • 当 irb 在没有额外初始化的情况下运行并以交互方式加载完成模块时,一切都按预期工作:
irb> 'abc'.str<TAB pressed>
irb> 'abc'.strip
irb> 'abc Def'.str<TAB pressed>
irb> 'abc Def'.strip
  • 但是,当使用irb -f -r irb/completion或使用irb.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
4

1 回答 1

0

默认情况下,irb 没有tab completion启用。

上面的第一组 irb 交互示例正在工作,因为您以其他方式启用了该功能。很可能wirblegembondgem或其他类似的 gem 正在 irb 上下文中加载。

将 ~/.irbrc 文件重命名为其他名称,这样它就不会加载到 irb 中,然后重试。选项卡完成不应该工作。

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

简要挖掘irb tab 完成的代码,我还没有弄清楚为什么会发生这种情况。:-)

于 2012-10-28T13:51:36.460 回答