Das letzte Tabulatorzeichen (Tabulator) springt im Terminal nicht zur nächsten Zeile

Das letzte Tabulatorzeichen (Tabulator) springt im Terminal nicht zur nächsten Zeile

Ich bin auf ein Problem gestoßen. In meinem Fall war es ein Lua-Programm, das eine Reihe von Zahlen druckte. Lua verwendet Tabulatoren als Trennzeichen und die Ausgabe in meinem 80-Spalten-Terminal sah folgendermaßen aus:

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

Beachten Sie, dass die Zahl 11 abgeschnitten ist, wobei die erste 1 in Spalte 79 und die zweite 1 in Spalte 0 der nächsten Zeile steht. Ich hatte erwartet, dass die vollständige Zahl 11 stattdessen in der nächsten Zeile erscheint.

Es ist nicht Lua-spezifisch und kann mit diesem Einzeiler leicht reproduziert werden:

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

Ich habe diese Frage und die akzeptierte Antwort gelesen:Warum gibt es auf einer 80-Spalten-Konsole 11 Tabstopps?das hat mir klar gemachtWarumdas passiert. Die Frage ist, gibt es eine Möglichkeit, dieses Verhalten zu überschreiben, sodass der letzte Tabulator zur Spalte 0 in der nächsten Zeile springt, anstatt zur letzten Spalte in der aktuellen Zeile?

Antwort1

Nein, Sie können dies nicht automatisch machen, d. h. ohne die Ausgabe Ihres Programms so zu filtern, dass Tabulatoren am rechten Rand als Umbruch interpretiert werden. Das liegt daran, dass der Umbruch im VT100-Stil bis zum rechten Rand reicht undnichtWrap, es sei denn, Sie schreiben einedruckbarZeichen. Tabulatoren sind nicht druckbar.

Die meisten Terminals sind so eingerichtet, dass sie Soft-Tabs verwenden (bereits zu Leerzeichen erweitert). Sie können Ihre sttyEinstellungen überprüfen, um festzustellen, ob dies der Fall ist. Die Ausgabe ist unklar, tab0bedeutet aber, dass versucht wird, Tabs zu verwenden, während tab3angegeben wird, dass dies nicht der Fall ist.

So zeigen Sie die Einstellung an:

stty -a

So deaktivieren Sie Hardtabs:

stty -tabs

LuaMaiüberschreiben Sie diese Einstellung. Wenn dies jedoch nicht der Fall ist, besteht die Möglichkeit, da es spacesich um ein druckbares Zeichen handelt.

Weiterführende Literatur:

verwandte Informationen