撤销自动缩进

8
当您使用带有自动缩进模式的irb时,end语句会额外缩进一级。
 def foo
   ...
   end

不使用普通缩进规则,而是:

def foo
  ...
end

因为你无法提前告诉irb下一行要跳出一个级别。这个问题在其他地方已经得到解决,例如这里这里,但是它们都没有给出令人满意的答案。它们只是建议放弃。
然而,如果我们能最小程度地重写一些irb方法,使自动缩进插入的空格不在提示区域,而是在您输入的行的开头,那么默认情况下,irb仍将插入空格,但我们将能够用退格键删除一些空格。这种可能吗?
或者,如果这不现实,那么是否可以让irb擦除屏幕上的最后一行,并在您按下包含end的行的Enter后以适当的缩进重新显示它?
1个回答

5

重写最后一行是可能的。但在irb中由于缺乏文档和版本间不一致的api而变得困难。一个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

我喜欢ripl并开始使用它。现在,我正在尝试自定义提示字符,但是我在网上找不到说明。使用IRB.conf [:DEFAULT] ...的irb样式似乎不起作用。您能否为我指出一条指令链接或简要解释如何操作? - sawa

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接