2012-01-25 8 views
8

Supponendo che ho le seguenti opzioni di hash come argomento a un metodo in Ruby 1.9.x:Vim, tabulari e Ruby 1.9 Hash

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

Utilizzando il plugin tabulare VIM, quale sarebbe l'espressione regolare essere quello di ottenere le opzioni di hash si allineano in questo modo:

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

la : deve rimanere attaccato alla chiave, a differenza, ad esempio, JSON.

Forse uno stile più accattivante sarebbe questo, invece, che sembra più in linea:

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

Qualcuno per caso sa come eseguire uno di questi allineamenti utilizzando tabellare?

Grazie!

risposta

13

Al fine di ottenere il primo allineamento, si può usare il comando

:Tab/\w:\zs/l0l1 

Per allineare le chiavi di hash a destra, sembra inevitabile per selezionare solo i linee che li contengono prima di applicare un comando :Tabular,

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

Si noti che questi comandi gestiscono correttamente i casi quando gli argomenti di chiamata di metodo oi valori di hash contengono simboli (come ': arg1' nel frammento di esempio della domanda). –

1

Uso Tabular molto ma non ho mai trovato l'occasione di provare le sue funzionalità "avanzate". Un caso simile al vostro esempio è presentato in :help tabular:

:Tabularize /,/r1c1l0 

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

che fa uso di quello che definisce "identificatori di formato".

Quindi, l'applicazione di questo comando per le opzioni (dopo selezione visuale) farà il trucco:

:'<,'>Tabularize /:/r1c1l0 

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

Nota all'auto: giocare di più con tabulare.