El último carácter del tabulador (tabulación) no salta a la siguiente línea en la terminal

El último carácter del tabulador (tabulación) no salta a la siguiente línea en la terminal

Me he topado con un problema. En mi caso fue un programa Lua que imprimía una serie de números. Lua usa pestañas como separadores, y el resultado fue así en mi terminal de 80 columnas:

1       2       3       4       5       6       7       8       9       10      1
1      12

Observe cómo se trunca el número 11, con el primer 1 en la columna 79 y el segundo 1 en la columna 0 de la siguiente línea. Esperaba que apareciera el número 11 completo en la siguiente línea.

No es específico de Lua y es fácilmente reproducible con esta frase:

printf '1\t2\t3\t4\t5\t6\t7\t8\t9\t10\t11\t12'

He leído esta pregunta y la respuesta aceptada:¿Por qué hay 11 tabulaciones en una consola de 80 columnas?lo que me hizo entenderpor quéeso está pasando. La pregunta es, ¿hay alguna manera de anular ese comportamiento para hacer que la última pestaña salte a la columna 0 en la línea siguiente, en lugar de a la última columna de la línea actual?

Respuesta1

No, no puede hacer que esto funcione automáticamente, es decir, sin filtrar la salida de su programa para interpretar la pestaña en el margen derecho como ajuste. Esto se debe a que el envoltorio estilo VT100 llega hasta el margen derecho ynoenvolver a menos que escribas unimprimiblepersonaje. Las pestañas no se pueden imprimir.

La mayoría de los terminales están configurados para usar pestañas programables (ya expandidas a espacios). Puedes comprobar tu sttyconfiguración para ver si esto es así. El resultado es oscuro, pero tab0significa que intenta usar pestañas, mientras que tab3dice que no.

Para ver la configuración:

stty -a

Para desactivar las pestañas físicas:

stty -tabs

luapuedeanule esa configuración, pero si no es así, es una posibilidad ya que spacees un carácter imprimible.

Otras lecturas:

información relacionada