Bildschirm zum Löschen von 'weniger' Befehlen beim Beenden - wie wird er ausgeschaltet?

79

Wie kann lessich das Programm zwingen , den Bildschirm beim Beenden nicht zu löschen?

Ich möchte, dass es sich wie ein git logBefehl verhält :

  • Beim Beenden wird die zuletzt gesehene Seite auf dem Bildschirm angezeigt
  • es wird nicht beendet, lessauch wenn der Inhalt auf einen Bildschirm passt (versuchen git log -1)

Irgendwelche Ideen? Ich habe lessin einem Handbuch keine geeigneten Optionen oder Umgebungsvariablen gefunden. Ich vermute, dass sie über eine Umgebungsvariable festgelegt wurden.

Wojciech Kaczmarek
quelle
Vermutlich benötigen Sie den Scrolling-Aspekt von weniger, morewären also nicht geeignet?
Svend

Antworten:

95

lessVerwenden Sie, um zu verhindern, dass der Bildschirm beim Beenden gelöscht wird -X.

Aus der Manpage:

-X oder --no-init

Deaktiviert das Senden der Zeichenfolgen für die Termcap-Initialisierung und -Deinitialisierung an das Terminal. Dies ist manchmal wünschenswert, wenn die Deinitialisierungszeichenfolge unnötige Aktionen ausführt, beispielsweise das Löschen des Bildschirms.

Wenn der Inhalt auf einen Bildschirm passt, ist dies eine Option -F:

-F oder --quit-if-one-screen

Bewirkt, dass weniger automatisch beendet wird, wenn die gesamte Datei auf dem ersten Bildschirm angezeigt werden kann.

-Fist jedoch nicht die Standardeinstellung, daher ist sie wahrscheinlich irgendwo für Sie voreingestellt. Überprüfen Sie die Umgebungsvariable LESS.

sleske
quelle
Ausgezeichnet! -X ist das, was ich vorhatte.
Wojciech Kaczmarek
7
Dies ist besonders ärgerlich, wenn Sie wissen, -Faber nicht -X, da bei einem Wechsel zu einem System, das den Bildschirm auf init zurücksetzt, kurze Dateien ohne ersichtlichen Grund einfach nicht angezeigt werden. Dies hat mich gebissen, ackals ich versuchte, meine ACK_PAGER='less -RF'Einstellungen auf den Mac zu übertragen. Vielen Dank!
Markpasc
@markpasc: Danke für den Hinweis. Ich hätte nicht gewusst, dass diese Kombination diesen Effekt verursachen würde, aber jetzt ist es offensichtlich.
sleske
7
Dies ist besonders nützlich für den Man-Pager, damit Man-Pages nicht ausgeblendet werden, sobald Sie weniger mit der Taste 'q' beenden. Das heißt, Sie scrollen zu der Position in einer Manpage, an der Sie interessiert sind, damit sie nur verschwindet, wenn Sie den weniger Pager beenden, um die Informationen zu verwenden. Also fügte ich hinzu: export MANPAGER='less -s -X -F'zu meinem .bashrc, um Manpage-Informationen auf dem Bildschirm zu halten, wenn ich weniger beende, damit ich sie tatsächlich verwenden kann, anstatt sie auswendig zu lernen.
Michael Goldshteyn
2
Es ist ein bisschen beschissen, dass Sie sich entscheiden müssen, wann Sie anfangen, lesswie es sich verhalten muss, wenn Sie beenden.
Michael Burr
17

Wenn Sie möchten, dass eine der Befehlszeilenoptionen immer als Standardeinstellung verwendet wird, können Sie Ihrem .profile oder .bashrc die Umgebungsvariable LESS hinzufügen. Zum Beispiel:

export LESS="-XF"

Wendet immer -X -F an, wenn in dieser Anmeldesitzung weniger ausgeführt wird.

Manchmal sind Befehle mit Alias ​​versehen (in bestimmten Distributionen sogar standardmäßig). Um dies zu überprüfen, geben Sie ein

alias

ohne Argumente, um zu sehen, ob es mit Optionen, die Sie nicht wollen, verzerrt wurde. Um den eigentlichen Befehl in Ihrem $ PATH anstelle eines Alias ​​auszuführen, stellen Sie ihm einfach einen Back-Slash voran:

\less

So überprüfen Sie, ob in Ihrer Umgebung eine WENIGER-Umgebungsvariable festgelegt ist, die sich auf das Verhalten auswirkt:

echo $LESS
Derek Douville
quelle
2
Tatsächlich füge ich hinzu, export LESS="-XFR"damit die Farben auch durchscheinen less.
Dotancohen
2
Dank dafür! -XFallein brach die Ausgabe von git diff, und -XFRbekommt das Beste aus beiden Welten - keine Bildschirmreinigung, sondern farbige git diffAusgabe.
Giles Thomas
1

Oder setzen Sie es einfach in Ihrer globalen Git-Konfiguration:

git config --global core.pager 'less -FX'

Auf diese Weise bleiben andere Werkzeuge unberührt (was mir gefällt).

Lester Cheung
quelle