2012-10-28 33 views
2

我在irb中發現了一個錯誤還是在這裏錯過了某些東西?不確定的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'奇怪的事情開始t Ø發生:
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 

回答

0

默認情況下,IRB沒有啓用tab completion

以上第一組irb交互示例正在工作,因爲您已以其他方式啓用了功能。很有可能是wirble gembond gem或其他類似的gem正在irb上下文中加載。

將〜/ .irbrc文件重命名爲其他內容,以便它不會在irb中加載,然後重試。選項卡完成不應起作用。

我使用'abc Def'.str確認了標籤填充行爲。似乎是irb選項卡完成功能中的一個錯誤。

通過code for irb tab completion進行簡短的挖掘,我還沒弄清楚爲什麼會發生這種情況。 :-)

+0

第一組irb交互沒有初始化,即。無需加載.irbrc。正如我所提到的,完成模塊是交互式加載的,所以在出現提示後,我只需輸入'require'irb/completion''。重點是當這種方式加載時**它按預期工作,所以相同模塊的行爲有所不同! –