yo no soy una maestro en esto, y todo lo que diré aquí se basa en mi un comprensión de Tabularize.
Tabularizar siempre divide las cosas en los campos, descritos por la expresión regular. Por ejemplo:
abc,d,e
a,b,cde
:Tab /,
hace que se divida cada línea como la siguiente:
|abc|,|d|,|e|
|a|,|b|,|cde|
A continuación, cada campo se rellena con espacios por lo que la alineación delimitador de campo - y todo lo que recibe y extra-espacio por defecto (a excepción del último campo, creo).
|abc |, |d |, |e |
|a |, |b |, |cde|
El resultado es:
abc , d , e
a , b , cde
Mediante la adición de banderas, se puede controlar la alineación y el relleno para cada campo. Si proporciona menos banderas de las necesarias, se reutilizarán. Entonces, para hacer que todo se alinee de la misma manera, diga a la izquierda con el relleno 0 puede usar un solo indicador que se repetirá para cada campo. Por lo tanto:
abc,d,e
a,b,cde
Tab /,/l0 <-- or c0, or r0 or whatever
abc,d,e
a ,b,cde
La conclusión que tengo a mi cuenta es que no hay mucho sentido tener un campo de anchura cero (como :Tab /,\zs
), probablemente haciendo que se consigue el primer carácter después de que el patrón y echar a perder, cortándolo
Ahora, para mí :Tab /[^,]\+,
no funcionaba correctamente, generando espacios duplicado:
john, betty, wally, beth
walter, george, thomas, john
herbert, bob, petty, mick`
^^ ^^
Creo que es porque no hay un campo intermedio. Este patrón, hace un delimitador de campo residen al lado de otra, de esta manera:
|john,||betty,||wally,||beth|
Entonces el cero con el campo generado (entre delimitadores) también se rellena con el espacio adicional 1 por defecto.
|john, | |betty, | |wally, ||beth| <-- for some outrageous reason the las one is cut.
john, betty, wally, beth
¿Cómo se puede solucionar?
Abriría el espacio para un delimitador, que no hace que un delimitador esté cerca de otros. ¿Cómo? Simplemente agregando un espacio después de la coma.
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`
Ahora puede alinear todo en espacios y relleno de ceros:
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`
espero que ayuda a la comprensión en forma de tabla!
su solución (la que probé también) elimina los primeros caracteres de la segunda y tercera columna. – Reman
Correcto, puedo reproducir eso y parece un error. He creado un ticket para esto: https://github.com/godlygeek/tabular/issues/3 – Raimondi
Funciona muy bien, ¡muchas gracias! – Reman