如果你使用自动缩进模式的irb,end
语句会缩进一级额外的
def foo
...
end
而不是显示普通的缩进约定:
def foo
...
end
因为你无法事先告诉irb你将在下一行中逃脱一个级别。这个问题已在其他地方得到解决,如here或here,但两者都没有给出满意的答案。他们只是建议放弃。
但是,如果我们可以最小限度地覆盖一些irb方法,以便自动缩进不会在提示区域中插入空格,而是在您输入的行的开头插入,那么默认情况下,irb仍然会插入空格,但是我们将能够用退格键擦除一些空格。这可能吗?
或者,如果这不现实,那么是否可以将irb擦除屏幕的最后一行,并在包含end
的行上按Enter后立即使用适当的缩进重新显示?
答案 0 :(得分:5)
可以重写最后一行。由于缺少文档和跨版本的一致api,因此难以在irb中执行此操作。另一种选择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