I\'m trying to format some python code with the tabular.vim plugin. It\'s currently a sqlalchemy declarative class, and looks something like this:
id =
Excellent plugin to do it: vim-easy-align.
You can use this command:
:Tabularize /^[^=]*\zs=
The pattern only matches the first =
.
You can add these two line to ~/.vim/after/plugin/TabularMaps.vim
AddTabularPattern 1= /^[^=]*\zs=
AddTabularPattern 1== /^[^=]*\zs=/r0c0l0
Next time, simply run:
:Tabularize 1=
If you don't need spaces around =
, run this:
:Tabularize 1==
The suggestions above are good, but in this case they are a little too complicated and require too much typing. How about:
:Tab /=.*/
This works just fine -- match the first equal sign and everything after it, aligned left (default, which works just fine!).
As per this answer, instead of creating a static mapping for each case, you can do this dynamically by setting up a vim command like this:
command! -nargs=1 -range TabFirst exec <line1> . ',' . <line2> . 'Tabularize /^[^' . escape(<q-args>, '\^$.[?*~') . ']*\zs' . escape(<q-args>, '\^$.[?*~')
With this command, if you wanted to align based on the first =
then you could do:
:TabFirst =
Or, if you wanted to align on the first {
you could do:
:TabFirst {
This supports range selections as well as Tabularize's smart selection.