Der Terminaleingang wird nicht oder nicht richtig umbrochen

15

Seit einer Weile habe ich dieses anhaltende Problem auf allen meinen Terminals, angefangen bei Gnome-Standard und Tilda, die ich beide verwende, bis hin zu denen, die ich gerade kurz gewirbelt habe, wobei meine Eingabe den Anfang einer eigenen Zeile überschreibt, wenn es sein sollte Zeilenumbruch und nur in der nächsten Zeile.

Wenn Sie Strg-A drücken, um zum Zeilenanfang zurückzukehren, werde ich stattdessen irgendwo in der Zeile vor meiner ersten Eingabezeile zurückgebracht, von der aus jede weitere Eingabe nur sehr seltsam wird.

Da dies eine wirklich schlechte Erklärung ist und schwer zu visualisieren ist, sieht es folgendermaßen aus:

Screencap: Zeilenumbruch-Test

Weiß jemand was das ist? Dies geschieht nicht nur unter bestimmten Umständen, es ist eine permanente Sache, die von Anfang bis Ende jeder Sitzung in jedem Terminalemulator vorhanden ist.

Ausgabe von printf "%s\n" "$PS1" "$COLUMNS":

leod:~$ printf "%s\n" "$PS1" "$COLUMNS"
\[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ 
80

Ausgabe von stty -a:

leod:~$ stty -a
speed 38400 baud; rows 11; columns 140; line = 0;
intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>; eol2 = <undef>; swtch = <undef>; start = ^Q; stop = ^S; susp = ^Z;
rprnt = ^R; werase = ^W; lnext = ^V; discard = ^O; min = 1; time = 0;
-parenb -parodd -cmspar cs8 -hupcl -cstopb cread -clocal -crtscts
-ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl ixon -ixoff -iuclc -ixany -imaxbel -iutf8
opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0
isig icanon iexten echo echoe echok -echonl -noflsh -xcase -tostop -echoprt echoctl echoke -flusho -extproc
leod
quelle
3
Addieren printf "%s\n" "$PS1" "$COLUMNS"Sie bitte die Ausgabe von .
Muru
Es könnte sein, dass Ihr Programm testdas Terminal in einem instabilen Zustand verlässt. Wenn es ein Skript ist, können Sie das in Ihre Frage aufnehmen? Was passiert, wenn Sie ohne vorherige Ausführung mit dem Schreiben beginnen testund der Text normal umgebrochen wird?
WinEunuuchs2Unix
1
Können wir stty -abitte auch die Ausgabe von sehen?
Stahlfahrer
1
@ WinEunuuchs2Unix falscher Test (Wortspiel beabsichtigt). Versuchen Sie es type -a teststattdessen.
muru
1
Was ist die Ausgabe von printf "%q\n" "$PS1"? Es kann rohe Escape-Sequenzen in PS1 geben, die %sintakt bleiben (was z. B. die Farbe hin und her ändern kann, was in der Ausgabe unbemerkt bleibt). %qzitiert jedes nicht druckbare Zeichen in lesbarer Form.
egmont

Antworten:

7

Möglicherweise erkennt Ihr Terminal die Fenstergröße nicht richtig. Ich habe in U & L Stackexchange eine verwandte Frage gefunden , und jemand hat die folgende Methode vorgeschlagen, um zu überprüfen, ob dies der Fall ist:

Art

shopt | grep checkwinsize

Wenn die Ausgabe nicht ist:

checkwinsize    on

Sie können verwenden

shopt -s checkwinsize

aktivieren. So deaktivieren Sie:shopt -u checkwinsize

Hee Jin
quelle
1
Vielleicht habe ich nicht genug getestet, aber meine checkwinsizewar schon on. Früher habe ich shopt -u checkwinsizees ausgeschaltet und mein Terminal hat den Text immer noch richtig verpackt. Ich bin nicht sicher, ob diese Antwort das OP-Problem wirklich löst.
WinEunuuchs2Unix
Brillant. Dies ist das Update, das ich brauchte. Der Befehlszeilenumbruch funktioniert jetzt mit weit über 80 Zeichen einwandfrei.
Randy
@Randy Freut mich zu hören, dass es für Sie funktioniert hat!
Hee Jin