2011-05-20 11 views
8

wnen utiliza IRB con modo de sangrado automático, los end declaraciones para hacer sangrías un nivel extra deDeshacer sangría automática

def foo 
    ... 
    end 

en lugar de mostrar la convención sangría ordinaria:

def foo 
    ... 
end 

porque no se puede decir irb de antemano que vas a escapar de un nivel en la línea siguiente. Esta pregunta se ha abordado en otro lugar como here o here, pero ninguno da una respuesta satisfactoria. Ellos solo sugieren darse por vencidos.

Sin embargo, si podemos sobrescribir mínimamente algunos métodos irb para que la sangría automática inserte espacios en blanco que no estén en el área de solicitud pero al principio de la línea que escriba, entonces de manera predeterminada, irb aún insertará espacios, pero podremos borrar algunos espacios con retroceso. es posible?

O, si eso no es realista, ¿es posible borrar la última línea de la pantalla y volver a mostrarla con la sangría correcta justo después de presionar Entrar en una línea que incluye end?

Respuesta

5

Es posible volver a escribir la última línea. Hacerlo en IRB es difícil debido a su falta de documentación y api consistente en todas las versiones. Una alternativa de irb, ripl, ya ha resuelto este problema por sí mismo con un auto-indent plugin. Si desea dar ripl y su auto-indenting un intento:

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

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

Es genial. Lo usaré. Gracias. – sawa

+0

Me gusta Ripl y comencé a usarlo. Ahora, estoy tratando de personalizar los caracteres de solicitud, pero no puedo encontrar las instrucciones en la web. El estilo irb con 'IRB.conf [: DEFAULT] ...' no parece funcionar. ¿Puede indicarme un enlace para instrucciones o explicar brevemente cómo hacerlo? – sawa