8

如果您将 irb 与自动缩进模式一起使用,则end语句会额外缩进一级

 def foo
   ...
   end

而不是显示普通的缩进约定:

def foo
  ...
end

因为您无法提前告诉 irb 您将在下一行中逃脱一个级别。这个问题已在此处此处等其他地方得到解决,但都没有给出令人满意的答案。他们只是建议放弃。

但是,如果我们可以最低限度地覆盖一些 irb 方法,以便自动缩进不会在提示区域而是在您键入的行的开头插入空格,那么默认情况下,irb 仍然会插入空格,但我们将能够用退格键擦除一些空格。这可能吗?

或者,如果这不现实,那么是否可以让 irb 从屏幕上擦除最后一行,并在您按 Enter 后立即以适当的缩进重新显示它,包括end

4

1 回答 1

5

可以重写最后一行。由于缺乏文档和跨版本的一致 api,在 irb 中执行此操作很困难。irb 的替代品ripl已经通过自动缩进插件自行解决了这个问题。如果您想尝试 ripl 及其自动缩进:

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

# Auto-indent away
$ ripl
>> def foo
>>   puts "it's auto-magic!"
>> end
于 2011-05-22T18:23:37.977 回答