Hier ist ein relevanter Auszug aus less
den FAQ :
Kann weniger den Bildschirm in Ruhe lassen, wenn er beendet wird?
Wenn weniger startet, sendet es die Termcap-Zeichenfolge "ti" an das Terminal, und wenn es beendet wird, sendet es die Zeichenfolge "te". Was genau die Zeichenfolge "te" bewirkt, hängt vom verwendeten System, dem Terminaltyp und Ihrer Version von termcap ab. Auf einigen Systemen macht es nichts; Bei anderen wird der Bildschirm auf den Zustand zurückgesetzt, in dem er sich befand, als weniger gestartet wurde, wodurch die letzte Seite der Datei, die weniger angezeigt wurde, vom Bildschirm gelöscht wurde.
Wenn Ihnen das Verhalten von "te" auf Ihrem System nicht gefällt, können Sie das Senden der Zeichenfolgen "ti" und "te" deaktivieren, indem Sie mit der Option -X weniger aufrufen. Leider hat dies manchmal andere Nebenwirkungen, da die Zeichenfolgen "ti" / "te" möglicherweise andere erforderliche Aufgaben ausführen. Bei einigen Terminals führt das Deaktivieren von "ti" und "te" beispielsweise dazu, dass die Pfeiltasten nicht mehr funktionieren.
Wenn Sie möchten, dass "te" etwas anderes tut (z. B. den Bildschirm wiederherstellen, wenn dies noch nicht geschehen ist), müssen Sie herausfinden, wie Sie die Termcap oder Terminfo für Ihr Terminal auf Ihrem System ändern können. Leider wird dies auf verschiedenen Systemen unterschiedlich durchgeführt, sodass Sie die Dokumentation für Ihr System überprüfen müssen.
Untersuchungen führen dazu, dass die Termcap-Funktionen "ti" und "te" in terminfo als "smcup" und "rmcup" bezeichnet werden. Dies ist ein moderneres Termcap-Äquivalent.
Sie können sehen, wie Ihr Terminal ( $TERM
wahrscheinlich xterm
) konfiguriert ist mit:
infocmp -1 # which will print out capabilites one per line
Sie können die Bedeutung von Sequenzen mithilfe einer VT100-Steuerzeichenreferenz entschlüsseln .
Wenn Sie die Funktionen "smcup" und "rmcup" von Ihrem Terminal entfernen:
infocmp -1 | sed -r '/[sr]mcup.*/d' > new-terminfo-for-$TERM
und lassen Sie dann die terminfo-Bibliothek wissen, dass dies die neue, bevorzugte Funktionsspezifikation für $ TERM ist.
tic new-terminfo-for-$TERM
# you reverse this with `rm -ri ~/.terminfo`
Sie werden das bemerken less
" alternative Bildschirm nicht mehr gelöscht wird (weil es nie betreten worden war). Aber die Maus funktioniert auch nicht mehr .
Wenn Sie mit "rmcup" -Steuerzeichenfolgen experimentieren und es herausfinden, lassen Sie es mich bitte wissen!
Aktualisieren:
Eine funktionierende Alternative besteht darin, weniger als eine Funktion zu umbrechen , die cat ausführt, wenn die Datei der Terminalhöhe entspricht ( fügen Sie diese in Ihre .bashrc ein ):
less () {
# When single file argument, and file small enough, cat it
if [ $# = 1 ] && [ -f "$1" ] && [ $(wc -l "$1" | cut -d' ' -f1) -le $((${LINES:-0} - 3)) ]; then
cat "$@"
else
command less "$@"
fi
}
smcup
undrmcup
dass Sie noch nicht gelöst?Für langsame Eingaben wie
git log -Gregex
möchten Sie:A) Zeilen, die auf dem Hauptbildschirm angezeigt werden, sobald sie eingehen, und dann zum alternativen Bildschirm wechseln, sobald ein Bildlauf erforderlich ist (sodass die erste
$LINES
Ausgabe immer in Ihrem Bildlauf angezeigt wird); Wenn ja, fahren Sie mit der zweiten Antwort von Gilles auf eine ähnliche Frage fort .B) Zeilen, die auf dem alternativen Bildschirm angezeigt werden sollen, aber den alternativen Bildschirm verlassen und die Zeilen auf dem Hauptbildschirm drucken, wenn sich ein Bildlauf als unnötig herausstellt (sodass in Ihrem Bildlauf keine Ausgabe angezeigt wird, wenn ein Bildlauf erforderlich war); Wenn ja, schauen Sie sich meine Antwort auf eine ähnliche Frage an .
quelle