Я не мастер в этом, и все, что я скажу здесь, основано на моем понимании Tabularize.
Tabularize всегда разбивает вещи на поля, описываемые регулярным выражением,Например:
abc,d,e
a,b,cde
:Tab /,
Заставляет его делить каждую строку следующим образом:
|abc|,|d|,|e|
|a|,|b|,|cde|
Затем каждое поле дополняется пробелами, так что поле разделителя выравнивается - и все получает и экстрапробел по умолчанию (за исключением последнего поля, я думаю).
|abc |, |d |, |e |
|a |, |b |, |cde|
В результате:
abc , d , e
a , b , cde
Добавляя флаги, вы можете управлять выравниванием и заполнением для каждого поля.Если вы предоставите меньше флагов, чем необходимо, они будут использованы повторно.Итак, чтобы все выровнять одинаково, скажем, слева с отступом 0, вы можете использовать один флаг, который будет повторяться для каждого поля.Итак:
abc,d,e
a,b,cde
Tab /,/l0 <-- or c0, or r0 or whatever
abc,d,e
a ,b,cde
Вывод, который я имею в виду, заключается в том, что не имеет большого смысла иметь поле нулевой ширины (например, :Tab /,\zs
), вероятно, заставляя его получать первый символ после шаблонаи испортить, разрезать его.
Теперь, для меня :Tab /[^,]\+,
не сработал должным образом, генерируя двойные пробелы:
john, betty, wally, beth
walter, george, thomas, john
herbert, bob, petty, mick`
^^ ^^
Я думаю, это потому, что нет промежуточного поля.В этом шаблоне разделитель полей располагается рядом друг с другом, например так:
|john,||betty,||wally,||beth|
Затем к нулю с созданным полем (между разделителями) также добавляется дополнительный пробел по умолчанию.
|john, | |betty, | |wally, ||beth| <-- for some outrageous reason the las one is cut.
john, betty, wally, beth
Как ее решить?
Я бы выделил место для разделителя, который не позволяет разделителю находиться рядом с другими.Как?Просто добавив пробел после запятой.
john,betty,wally,beth
walter,george,thomas,john
herbert,bob,petty,mick`
:%s/,/, /g
john, betty, wally, beth
walter, george, thomas, john
herbert, bob, petty, mick`
Теперь вы можете выровнять все по пробелам и заполнению нулями:
john, betty, wally, beth
walter, george, thomas, john
herbert, bob, petty, mick`
:Tab / /l0
john, betty, wally, beth
walter, george, thomas, john
herbert, bob, petty, mick`
Надеюсь, это поможет понять Tabularize!