私はこれの達人ではありません。ここで言うことはすべて、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 /[^,]\+,
は適切に機能せず、2倍のスペースが生成されました。
john, betty, wally, beth
walter, george, thomas, john
herbert, bob, petty, mick`
^^ ^^
中間フィールドがないからだと思います。このパターンは、次のように、フィールド区切り文字を別の区切り文字と並べて配置します。
|john,||betty,||wally,||beth|
次に、フィールドが生成されたゼロ(区切り文字の間)にも、デフォルトで追加の1スペースが埋め込まれます。
|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を理解するのに役立つことを願っています!