Ich befinde mich in einem Terminal, das den alternativen Bildschirm unterstützt, der von less, vim usw. verwendet wird, um die vorherige Anzeige nach dem Beenden wiederherzustellen. Das ist eine nette Funktion, aber sie unterbricht die --quit-if-one-screen
Umschaltung wirklich , less
da in diesem Fall weniger zum alternativen Bildschirm wechselt, dessen Daten anzeigt, herausfindet, dass es nur einen Bildschirm gibt, und beendet sich und nimmt den Inhalt des alternativen Bildschirms mit.
Die häufig vorgeschlagene Problemumgehung besteht darin, die --no-init
Option zu verwenden, um die Verwendung des alternativen Bildschirms insgesamt zu vermeiden. Dies ist jedoch etwas hässlich, da ich es verwenden möchte, falls weniger tatsächlich als Pager fungiert. Aus diesem Grund suche ich nach einer Lösung, um den alternativen Bildschirm nur zu verwenden, wenn weniger nicht automatisch beendet wird.
Ich verwende dies meistens als Git-Pager, daher ist ein Wrapper-Shell-Skript, das nur dann weniger ausführt, wenn genügend Ausgabe vorhanden ist, auch in Ordnung. Zumindest wenn es keine Möglichkeit gibt, es ohne eine zu schaffen.
Antworten:
Seit weniger als 530 (im Dezember 2017 veröffentlicht)
less --quit-if-one-screen
wird nicht zum alternativen Bildschirm gewechselt, wenn weniger als ein Bildschirm angezeigt wird. Sie werden dieses Problem also nicht haben, wenn Ihre Version von less aktuell genug ist.In früheren Versionen muss weniger entscheiden, ob der alternative Bildschirm beim Start verwendet werden soll. Sie können diese Auswahl nicht auf einen Zeitpunkt verschieben, an dem sie endet.
Sie können auch weniger anrufen, den alternativen Bildschirm verwenden und den Inhalt auf den primären Bildschirm übertragen, wenn weniger automatisch beendet wird. Ich kenne jedoch keine Möglichkeit, eine automatische Beendigung zu erkennen.
Andererseits ist es nicht so schwierig, cat für kurze Eingaben und less für größere Eingaben aufzurufen, auch wenn die Pufferung erhalten bleibt, sodass Sie nicht warten müssen, bis die gesamte Eingabe anfängt, Inhalte in less zu sehen (der Puffer kann es sein) etwas größer - Sie werden nichts sehen, bis Sie mindestens einen Bildschirm voller Daten haben - aber nicht viel mehr).
Möglicherweise möchten Sie lieber die Zeilen auf dem Hauptbildschirm sehen, wenn sie eingehen, und zum alternativen Bildschirm wechseln, wenn die Zeilen einen Bildlauf verursachen würden.
quelle
$n
)#!/bin/bash
Ihr Skript einfügen sollten, da Sie ein bash-spezifisches Konstrukt verwenden, da Ihr Skript auf Systemen (wie Ubuntu)/bin/sh
ohne bash nicht funktioniert .less
optional auch beenden, wo der aktuelle Inhalt des Bildschirms nach dem Senden der un-init-Zeichenfolge gedruckt wird (aber nicht) . Sie könnten also den Vorteil haben, dass der alternative Bildschirm den Bildlauf nicht überfüllt, sondern den relevanten Teil der Manpage oder was auch immer nach dem Beenden auf dem Terminal belässt.GNU less v. 530 enthält den Fedora-Patch, auf den @ paul-antoine-arras verweist, und gibt die Terminal-Initialisierungssequenz nicht mehr aus, wenn er
--quit-if-one-screen
verwendet wird und die Eingabe auf einen Bildschirm passt.quelle
brew install less
, indem$LESS
sie F ausführen und sicherstellen, dass X weggelassen wird.Möchtest
git log -Gregex
du für langsame Eingaben :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 Bildlauffeld angezeigt wird); Wenn ja, fahren Sie mit der zweiten Antwort von Gilles fort .B) Zeilen, die auf dem alternativen Bildschirm angezeigt werden sollen, aber beenden Sie den alternativen Bildschirm, und drucken Sie die Zeilen auf dem Hauptbildschirm aus, wenn sich herausstellt, dass kein Bildlauf erforderlich ist (daher wird in Ihrem Bildlauf keine Ausgabe angezeigt, wenn ein Bildlauf erforderlich war). Verwenden Sie in diesem Fall das folgende Skript:
Es
tee
s die Eingabe in eine temporäre Datei, dann einmalless
verlässt ercat
die temporäre Datei s , wenn es weniger Zeilen als die Bildschirmhöhe enthält:Verwenden Sie es mit
export PAGER='/path/to/script'
. Das sollte ausreichen, umgit
es zu nutzen, es sei denn, Sie haben es bereits überschriebencore.pager
.Informationen zu möglichen Verbesserungen finden Sie auch in meiner etwas umfangreicheren Version dieses Skripts unter: https://github.com/johnmellor/scripts/blob/master/bin/least
quelle
Dieses Problem wurde in Red Hat-basierten Distributionen seit langem behoben, indem das Verhalten der Option -F im
less
Quellcode geändert wurde : Sehen Sie sich diesen Patch aus dem Fedora-Projekt an, dessen erste Version aus dem Jahr 2008 stammt terminal (dh die maximale Anzahl von Zeilen, die gleichzeitig angezeigt werden können) und um die Initialisierungs- und Deinitialisierungssequenzen wegzulassen, wenn die Datei in einen Bildschirm passt. Somit können die Optionen -X und -F unabhängig von der Dateilänge konsistent verwendet werden.quelle