So lassen Sie weniger Pager auf das Scrollrad reagieren und den Bildschirm nicht löschen

13

Ich kenne Antworten wie das Erstellen eines Mausrad-Scroll-the-Less-Pager-mit-Bash-and-Gnome-Terminals , bei dem das -XFlag aus der Umgebungsvariablen $ LESS entfernt wird. Aber ich möchte beides tun :

  1. Verwenden Sie das Mausrad, um den Pager zu scrollen (im Gegensatz zum Scrollen der Bildlaufleiste des Terminalfensters) (die Sie durch Entfernen -X von erhalten $LESS).
  2. Lassen Sie den Inhalt des Pagers nach dem Beenden auf dem Bildschirm bleiben (was normalerweise durch Hinzufügen -X zu erreicht wird $LESS).

Kann ich meinen Kuchen auf irgendeine Weise auch essen?

Kevin G.
quelle

Antworten:

20

Nicht ohne den Quellcode von less zu hacken. Ein bisschen Hintergrundgeschichte:

Weniger kann überhaupt nicht mit der Maus (einschließlich Bildlaufereignissen) umgehen.

Terminalemulatoren unterstützen einen sogenannten alternativen Bildschirm. Dies ist, zu dem die meisten Vollbild-Apps für ihre Dauer wechseln (und beim Beenden zum normalen Bildschirm zurückkehren, wodurch der vorherige Inhalt "wiederhergestellt" wird), und es gibt keinen Scrollback-Puffer. Less wechselt auch zu diesem alternativen Bildschirm, es -Xsei denn, dies ist in diesem Fall nicht der Fall.

Viele Terminalemulatoren haben herausgefunden, dass es im alternativen Bildschirmmodus und wenn die darin ausgeführte Anwendung nicht an Mausereignissen interessiert ist, sinnvoll ist, das Scrollen in Aufwärts- oder Abwärts-Tastendruckereignisse umzuwandeln. Es ist ein Hack, und er wäre entweder auf dem normalen Bildschirm schädlich (stellen Sie sich vor, was beispielsweise an Ihrer Shell-Eingabeaufforderung passieren würde) oder wenn die Anwendung mit der Maus umgehen möchte (sicher müssen sie dann die tatsächlichen Mausereignisse sehen). Da jedoch standardmäßig keine dieser beiden Optionen beim Ausführen aktiviert ist less, wird dieser Hack aktiviert (sofern der Terminalemulator dies unterstützt und über \e[?1007hvs.\e[?1007l). Ihre Bildlaufereignisse werden vom Terminalemulator in Aufwärts- und Abwärts-Tastendrücke konvertiert, und weniger können sie nicht von tatsächlichen Tastendrücken unterscheiden. Es werden keine Maus-Scroll-Ereignisse empfangen: Es werden Auf- und Ab-Tastendrücke angezeigt.

Sie haben also folgende Möglichkeiten: Entweder Sie wechseln zum alternativen Bildschirm, und der Hack des Terminals wandelt Bildlaufereignisse für weniger Zeit in Tastendrücke um, und der normale Bildschirm wird beim Beenden wiederhergestellt. oder Sie tun es nicht, und dann kann es keine Magie geben, die Bildlaufereignisse in Tastendrücke umwandelt, und weniger versteht die Bildlaufereignisse nicht.

Was könnte also getan werden? Nun, implementieren Sie entweder die Mausunterstützung in weniger und lassen Sie sie Scroll-Ereignisse selbst verarbeiten (und leben Sie mit einem nicht standardmäßigen Klick- oder Kopier-Einfüge-Verhalten) oder implementieren Sie einen anderen seltsamen Hack: Beim Beenden, nachdem Sie zum normalen Bildschirm zurückgekehrt sind, lesskönnte dies zum letzten Mal geschehen Drucken Sie einen Bildschirm mit Inhalten und wiederholen Sie alles, was vor dem Beenden angezeigt wurde.

In der Praxis läuft es im Grunde darauf hinaus: Entschuldigung, vergiss es.

egmont
quelle
0

Anscheinend erhalten Sie durch ein Upgrade auf weniger als 530 oder neuer die gewünschte Funktion.

http://www.greenwoodsoftware.com/less/news.530.html

Dies sind die Unterschiede zwischen Version 487 und Version 530:

Geben Sie keine Terminal-Init-Sequenz aus, wenn Sie -F verwenden und die Datei auf einen Bildschirm passt.

Es wurde kein "weniger" PPA mit der neueren Version gefunden. Laden Sie einfach das Quellpaket herunter, erstellen Sie es lokal und installieren Sie es.

und konfiguriere git wie folgt:

git config --global core.pager 'less -F -S -R -i -+X'

Weitere Informationen: Wie verwende ich "weniger -F" ohne "-X" und zeige trotzdem die Ausgabe an, wenn nur eine Seite vorhanden ist?

Ted Feng
quelle
0

Es ist nicht wirklich möglich, mit dem Mausrad in weniger Pager zu scrollen, aber es ist möglich, mit dem Mausrad den Inhalt mit w3m Pager zu scrollen! w3m ist ein " durchsuchbarer WWW-Pager mit hervorragender Unterstützung für Tabellen / Frames ", sodass er sogar als Konsolen-Webbrowser verwendet werden kann. Darüber hinaus ist es möglich, w3m als Konsolenbild-Viewer zu verwenden (funktioniert nicht mit allen Terminalemulatoren, funktioniert aber ziemlich gut mit xterm). w3m " unterstützt Tabellen, Frames, SSL-Verbindungen, Farb- und Inline-Bilder ". Sehr nützliche Anwendung! Bildschirmfoto

ILUXA
quelle