You can clone with
inoremap <silent> <Bar> <Bar><Esc>:call <SID>align()<CR>a
let p = '^\s*|\s.*\s|\s*$'
if exists(':Tabularize') && getline('.') =~# '^\s*|' && (getline(line('.')-1) =~# p || getline(line('.')+1) =~# p)
let column = strlen(substitute(getline('.')[0:col('.')],'[^|]','','g'))
let position = strlen(matchstr(getline('.')[0:col('.')],'.*|\s*\zs.*'))
I'm wondering, what does the "l1" option on the match of the Tabularize?
l means left align; 1 means one space of padding.
Would you recommend putting this in a ftplugin so as to not slow down non-cucumber-related file editing?
If you do, make sure you add <buffer> to the map. In practice, I haven't had any issues with it being global.
Ah cool, thank you!
FYI: I just added this to my after/ftplugin/cucumber.vim and it works like a charm. Very nice.
Thanks! Added this to my vimrc and it works perfectly.
I copied this into my .vimrc. And I have installed Tabular.vim successfully.
But it doesn't work. I input ab | cd | ef and nothing happened. What's wrong?!
@jznhljg, that doesn't look like a valid Cucumber table to me.
@tpope, I just want to edit some plain text, can I use this function to automatically adjust the padding space?
Sure, if you relax the regex a bit. As it stands now, it's hell bent on avoiding false positives.
@tpope, I am not familiar with regex. Can you do me a favor? Or a clue?
Sent with Sparrow (http://www.sparrowmailapp.com/?sig)
I was looking for some solution for dealing with Cuke tables in gVIM similar or close to the one TextMate bundle for Cucumber has.
But this is so much better, thanks a lot Tim, as usual :)
For those interested, I made a modified version of this that does the same for equals (=) signs. You can find it in the list of forks to the right, or here: https://gist.github.com/1258015
Credits still go to Tim for the awesome original, I just made a few small changes.
For those who are interested I made a little plugin that you can use easily with pathogen, it is available here: https://github.com/quentindecock/vim-cucumber-align-pipes
Feedback are welcome,
For those interested, I made a little plugin that extends this concept to creating full fledged tables as you type :). It is available here - https://github.com/dhruvasagar/vim-table-mode. You can put let g:table_mode_border=0 in your vimrc to get the same behavior as this plugin.
Also you can change the separator itself by let g:table_mode_separator='=' or whatever you need to achieve the same effect for other type of characters. Please refer to the :h table-mode.txt for more information. Feedback is welcome :).