2011-05-20 60 views
8

Wnen使用內部評級法與自動縮進模式下,end報表獲得額外的縮進一級撤消自動縮進

def foo 
    ... 
    end 

而不是顯示普通的縮進約定:

def foo 
    ... 
end 

,因爲你不能告訴irb提前表示您將要在下一行中跳出一個級別。這個問題已在其他地方解決,如herehere,但都沒有給出滿意的答案。他們只是建議放棄。然而,如果我們可以最小化覆蓋一些irb方法,以便自動縮進將插入不在提示區域中的空白區域,但是在輸入的行的開頭,默認情況下,irb仍然會插入空格,但是我們將能夠使用退格刪除一些空格。這可能嗎?

或者,如果這樣做不現實,那麼是否有可能讓IRB從屏幕上擦除最後一行,並在按下Enter後重新顯示正確的縮進值,包括end

回答

5

重寫最後一行是可能的。在irb中做這件事很困難,因爲它缺少各種版本的文檔和一致的API。替代方案ripl已經通過auto-indent plugin解決了此問題。如果你想給ripl和它的自動縮進一個嘗試:

$ gem install ripl-auto_indent 
$ echo "require 'ripl/auto_indent'" >> ~/.riplrc 

# Auto-indent away 
$ ripl 
>> def foo 
>> puts "it's auto-magic!" 
>> end 
+0

這很酷。我會用它。謝謝。 – sawa 2011-05-22 19:26:51

+0

我喜歡ripl並開始使用它。現在,我正在嘗試自定義提示字符,但我無法在網絡上找到說明。使用'IRB.conf [:DEFAULT] ...'的irb風格似乎不起作用。你能指點我一個指導鏈接還是簡單地解釋一下如何去做? – sawa 2011-05-23 04:16:54