
Ich bin ein begeisterter Benutzer desFischschaleund es gefällt mir sehr.
Eine Frage jedoch:
auf der Seitehttps://fishshell.com/docs/2.1/index.htmlEs gibt einen Absatz mit dem Titel"Befehlszeileneditor". Es listet viele nützliche Tastenkombinationen auf.
Am interessantesten für mich istStrg-L. Laut Beschreibung: "Strg-L löscht und malt den Bildschirm neu". Ich habe es ausprobiert und es funktioniert wie gewünscht. Allerdings erzeugt es einige Zeichen, die zur vorherigen Eingabeaufforderung hinzugefügt werden. Das sieht man, wenn man zurückscrollt.
Beispiel:
rosika@... ~/Schreibtisch> [3;J
rosika@... ~/Schreibtisch>
Das [3;J
ist also das, wonach ich frage. Es [
handelt sich tatsächlich um eine Art Rechteck mit (glaube ich) 4 Ziffern darin.
Kann mir jemand sagen, warum dieses Phänomen auftritt? Was hat es damit auf sich und soll das so sein?
Vielen Dank im Voraus.
Grüße
Rosika
Mein System:
Linux/Lubuntu 16.04.4 LTS, 64 Bit
Fisch V. 2.2.0-3
Antwort1
Unix-Terminals werden mit Inhalt gefüllt, indem Steuersequenzen und Text interpretiert werden, die in einem einzigen Stream vermischt sind. Viele Zeichen können sowohl Text als auch ein Steuercode sein und ihre Bedeutung hängt vom Kontext ab.
<esc> [3;J
ist eine solche Sequenz. Im falschen Kontext wird sie ausgedruckt, im richtigen Kontext ist sie Teil des Zurücksetzens der Anzeige.
Weitere Einzelheiten finden Sie auf den Manpages termcap
, console_codes
, und .tput
Antwort2
Ihr Terminalemulator stimmt nicht mit dem Wert Ihrer TERM
Umgebungsvariable überein. Der häufigste Fehler ist die Annahme, dass etwas, das nicht XTerm ist, mit den Termcap/Terminfo-Datensätzen mit dem Namen xterm
oder xterm-new
oder übereinstimmt xterm-256color
.
Ihr Terminfo-Eintrag gibt die relativ neue E3
Funktion an (derzeit angegeben für linux
, putty
, putty-256color
, xterm-basic
, , xterm-new
, xterm
, xterm-256color
und einige andere Terminaltypen), die Programmen mitteilt, dass ein Scrollback-Puffer zu löschen ist und wie dieser gelöscht wird. Ihr Terminalemulator unterstützt diese Steuersequenz jedoch nicht und druckt stattdessen das aus, was Sie als Antwort darauf sehen. Die Fish-Shell führt den clear
Befehl aus, der nun diese Terminfo-Erweiterung nutzt.
Der im Wert Ihrer TERM
Umgebungsvariablen angegebene Name muss mit dem Namen eines Termcap/Terminfo-Datensatzes übereinstimmen, der die Funktionsweise Ihres Terminalemulators korrekt beschreibt.
Weiterführende Literatur
- https://unix.stackexchange.com/a/375784/5132
- https://unix.stackexchange.com/a/341619/5132
- https://unix.stackexchange.com/a/419092/5132
- https://unix.stackexchange.com/a/318297/5132
- c02y (24.03.2016).wie bindet man „Strg-L“, um den Bildschirm zu leeren, anstatt den Terminalpuffer zu löschen?. Fischschalenfehler Nr. 2855. GitHub.