Warum zeichnet Nano den Bildschirm auf einigen Systemen nicht korrekt neu?

1193
Sod Almighty

Dies ist eine seltsame.

Auf einigen meiner Debian-Systeme - aber nicht auf allen - erhalte ich seltsame Korruption in bestimmten Terminal-Programmen, wie z nano. Bei der Verwendung geschieht dies jedoch nicht less. In diesem speziellen Fall verwende ich Debian 7.9 "Wheezy" 64-Bit. Ich habe eine Reihe von Paketen installiert, aber IIRC ist bekannt, dass dieses Problem auch bei einer Neuinstallation auftritt.

Das Problem ist wie folgt. Ich öffne ein großes Textdokument (dh eines mit mehreren Seiten) in Nano und scrolle es mit den Cursortasten durch. Immer wenn der Cursor unter dem unteren Bildschirmrand vorbeiläuft, springt das Dokument um eine halbe Seite nach unten. Das ist natürlich normal. Was jedoch nicht normal ist, ist die Tatsache, dass nur die untere Hälfte des Bildschirms aktualisiert wird!

Wenn ich den Cursor nach oben bewege, wird auf ähnliche Weise die vorherige Seite angezeigt, jedoch wird nur die obere Hälfte des Bildschirms aktualisiert.

Dies lässt sich am besten anhand von Abbildungen verdeutlichen. Bitte beachten Sie das folgende Bild einer Dummy-Datei, die nur Zeilennummern enthält:

Abbildung 1

Es muss ein Foto sein, da das Problem nicht über ssh auftritt . Seltsamerweise tritt es auch nicht auf, wenn ich den screenBefehl zuerst ausstelle .

Ich bewege den Cursor unter die Zeile 43 und folgendes passiert:

Abbildung 2

Beachten Sie, wie die untere Hälfte des Bildschirms aktualisiert wird, um jetzt Zeilen ab 44 anzuzeigen, während die obere Hälfte unverändert bleibt.

Wenn ich den Cursor erneut an den unteren Rand des Bildschirms bewege, geschieht dies erneut:

Abbildung 3

Wieder wurde die untere Hälfte des Bildschirms so aktualisiert, dass die Zeilen ab 66 angezeigt werden, während die obere Hälfte des Bildschirms unverändert bleibt.

Wenn ich den Cursor dann am oberen Bildschirmrand vorbeibewege, zeigt die obere Hälfte das gleiche Problem:

Abbildung 4

Wie Sie sehen, wurde die obere Hälfte des Bildschirms so aktualisiert, dass die Zeilen von 23 bis 44 angezeigt werden, während sich die untere Hälfte nicht geändert hat und immer noch Zeilen zeigen, die mit 67 beginnen.

Ich verwende derzeit die zshShell, aber das gleiche Problem tritt in auf bash. Daher handelt es sich nicht um ein Shell-spezifisches Problem.

Die $linesund $columnsVariablen sind leer; und die TERMVariable wird auf gesetzt xterm-256color.

Also ... warum passiert das und was kann ich dagegen tun? Vielen Dank.

0
Welche Größe hat "Stty Size"? Ist das eine Seriennummer? Sind Sie wirklich mit xterm _ - die Fotos ähneln eher der Linux-Konsole? (Es kann nicht _possibly_shell-spezifisch sein, da die Shell hier nichts zu sagen hat, sie interpretiert nur Befehle.) grawity vor 8 Jahren 0
@grawity Nun, ich habe nie gesagt, dass ich Xterm benutzt. Ich benutze tatsächlich die Linux-Textmodus-Konsole. "stty size" berichtet über "48 128". Sod Almighty vor 8 Jahren 0
Nein, Sie sagten, Sie hätten TERM = xterm-256color, was Xterm oder kompatibel bedeutet, und die Linux-Textmodus-Konsole ist _not_xterm-kompatibel. Es braucht "TERM = Linux". grawity vor 8 Jahren 0
@grawity Wow, das hat es behoben, danke. Aber ähm ... brauche ich nicht `TERM = xterm-256color` oder etwas, wenn` ssh`ing, also bekomme ich Farben richtig angezeigt? Wie stelle ich sicher, dass dies eingestellt ist, wenn `ssh`ing verwendet wird? Sod Almighty vor 8 Jahren 0

1 Antwort auf die Frage

1
grawity

Das Problem ist also, dass Sie TERM=xterm-256colordie Linux-Konsole verwenden, die kein mit Xterm kompatibles Terminal ist. (Und unterstützt auch keine 256 Farben.)

Wenn Sie $ TERM in Ihrer ~/.bashrcoder einer ähnlichen Datei einstellen, überprüfen Sie den vorherigen Wert, bevor Sie den neuen Wert festlegen. Zum Beispiel:

case $TERM in xterm|screen|tmux|rxvt-unicode) TERM="$TERM-256color";; esac