2012-01-25 9 views
8

Suponiendo que tengo las siguientes opciones Hash como un argumento a un método en Ruby 1.9.x:Vim, tabulares y Ruby 1.9 Hashes

my_method :arg1, 
    some_option: "value 1" 
    some_other_option:true 
    option_three: 123 

Usando el plugin tabular VIM, ¿cuál sería la expresión regular para conseguir ser las opciones de hash se alinean así:

my_method :arg1, 
    some_option:  "value 1" 
    some_other_option: true 
    option_three:  123 

el : tiene que permanecer conectado a la llave, a diferencia de, por ejemplo, JSON.

Tal vez un estilo más atractivo sería este lugar, que se parece más alineados:

my_method :arg1, 
     some_option: "value 1" 
    some_other_option: true 
     option_three: 123 

¿Alguien por casualidad saben cómo llevar a cabo cualquiera de estas alineaciones utilizando tabular?

Gracias!

Respuesta

13

el fin de obtener la primera alineación, se puede utilizar el comando

:Tab/\w:\zs/l0l1 

Para alinear claves hash a la derecha, parece inevitable para seleccionar sólo los líneas que contienen antes de aplicar un comando :Tabular,

:Tab/\w:\zs/r0l1l0 
+0

Tenga en cuenta que estos comandos manejan correctamente los casos cuando los argumentos de llamada al método o los valores de hash contienen símbolos (como ': arg1' en el fragmento de ejemplo de la pregunta). –

1

Utilizo mucho Tabular pero nunca he encontrado la ocasión de probar sus características "avanzadas". Un caso similar a su ejemplo se presenta en :help tabular:

:Tabularize /,/r1c1l0 

     Some short phrase , some other phrase 
A much longer phrase here , and another long phrase 

que hace uso de lo que llama "formato" especificadores.

Por lo tanto, la aplicación de este comando para las opciones (después de la selección visual) hará el truco:

:'<,'>Tabularize /:/r1c1l0 

my_method :arg1, 
     some_option : "value 1" 
    some_other_option : true 
     option_three : 123 

Nota a la libre: jugar más con tabular.

Cuestiones relacionadas