O último caractere da tabulação (tabulação) não salta para a próxima linha no terminal

O último caractere da tabulação (tabulação) não salta para a próxima linha no terminal

Eu me deparei com um problema. No meu caso era um programa Lua imprimindo uma série de números. Lua usa tabulações como separadores, e a saída ficou assim no meu terminal de 80 colunas:

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

Observe como o número 11 está truncado, com o primeiro 1 na coluna 79 e o segundo 1 na coluna 0 da próxima linha. Eu esperava que o número 11 completo aparecesse na próxima linha.

Não é específico de Lua e é facilmente reproduzível com esta linha:

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

Eu li esta pergunta e a resposta aceita:Por que existem 11 tabs em um console de 80 colunas?o que me fez entenderpor queisso está acontecendo. A questão é: existe uma maneira de substituir esse comportamento, para fazer a última guia pular para a coluna 0 na próxima linha, em vez de para a última coluna da linha atual?

Responder1

Não, você não pode fazer isso funcionar automaticamente, ou seja, sem filtrar a saída do seu programa para interpretar a guia na margem direita como quebra automática. Isso ocorre porque o empacotamento estilo VT100 atinge a margem direita enãoembrulhe a menos que você escreva umimprimívelpersonagem. As guias não podem ser impressas.

A maioria dos terminais está configurada para usar soft tabs (já expandidas para espaços). Você pode verificar suas sttyconfigurações para ver se é assim. A saída é obscura, mas tab0significa que ele tenta usar guias, mas tab3diz que não.

Para ver a configuração:

stty -a

Para desativar as guias rígidas:

stty -tabs

Luapoderiasubstitua essa configuração, mas se isso não acontecer, é uma possibilidade, pois spaceé um caractere imprimível.

Leitura adicional:

informação relacionada