Wie kann ich den 'Mann'-Text noch sehen, nachdem ich Mann verlassen habe?


16

Ich verwende normalerweise tcsh oder bash und möchte oft 'man' verwenden, um die Optionen eines Befehls zu überprüfen. Gegenwärtig verschwindet der Man-Text, wenn ich man oder Strg-C beende, und ich sehe den Scrollback-Puffer, der da war, bevor ich den Befehl 'man' ausgeführt habe. Ich möchte immer noch den 'Mann'-Text sehen, den ich als Referenz angesehen habe, während ich den Befehl an der Eingabeaufforderung eingebe, ohne ein zweites Fenster zu öffnen. Wie kann ich das tun?

Antworten:


17

Dieses Verhalten ist auf die Funktion "Alternativer Bildschirm" zurückzuführen, die in einigen (Hardware-) Terminals und den meisten (Software-) Terminalemulatoren enthalten ist. Was passiert, ist, dass einige Terminal-fähige Programme auf den alternativen 'Bildschirm' wechseln, um ihre Arbeit zu erledigen und zum normalen 'Bildschirm' zurückzukehren, wenn sie entlassen werden (beenden, suspendieren usw.). Dadurch wird die endgültige Ausgabe solcher Programme effektiv gelöscht.

Eine Websuche nach "terminfo prevent altscreen" lieferte eine Seite, auf der das alternative Bildschirmproblem und verschiedene Lösungen erläutert wurden .

Wie auf der verlinkten Seite beschrieben, können einige Programme so konfiguriert werden, dass der alternative Bildschirm nicht verwendet wird. Die -XOption für weniger ist ein indirekter Weg, dies zu tun. Vim kann auf ähnliche Weise konfiguriert werden, indem die Variablen t_tiund t_tedeaktiviert werden.


Eine weiter gefasste Lösung besteht darin, den Terminfo- Eintrag für Ihr Terminal so zu bearbeiten , dass er keine alternativen Bildschirmsteuerungssequenzen enthält. Die terminfo-Einträge bilden eine Datenbank, die Programmen mitteilt, welche Steuersequenzen an ein Terminal gesendet werden müssen, um bestimmte Effekte zu erzielen (Bewegen des Cursors, Löschen des Bildschirms, Löschen eines Teils der aktuellen Zeile usw.). Indem Sie den Terminfo-Eintrag bearbeiten, den Ihr Terminal verwendet, können Sie festlegen, dass alle terminfo-verwendenden Programme nicht darüber informiert werden, dass die Kontrollsequenzen für den alternativen Bildschirm sogar vorhanden sind.

Aus der Liste der Steuersequenzen für xterm können wir ersehen , dass die Steuersequenzen von Interesse sind (für xterm- ähnliche Terminalemulatoren)

  • Alternative Anzeige aktivieren: ESC [ ? 47 h(ebenfalls für 1047 und 1049) und
  • normalen Bildschirm wiederherstellen: ESC [ ? 47 l(ebenfalls für 1047 und 1049).

Diese Codes sind höchstwahrscheinlich in den terminfo-Variablen smcupund enthalten rmcup. Ein schneller und unsauberer Weg, um diese Variablen für Ihr aktuelles TERM herauszufinden, könnte so aussehen:

infocmp | sed -e 's/[sr]mcup=[^,]*,//' > /tmp/noaltscreen-terminfo
tic -o ~/.terminfo/ /tmp/noaltscreen-terminfo

Diese Methode ist ziemlich grob und wird sicherlich nicht für alle Terminals funktionieren, aber sie wird wahrscheinlich für die meisten xterm- ähnlichen Terminalemulatoren funktionieren . Im Idealfall sollten Sie die Werte in smcupund rmcupVariablen des Eintrags terminfo für Ihr Terminal untersuchen und konservativ bearbeiten, um unerwünschtes Verhalten zu vermeiden. Die oben verlinkte Diskussions- / Lösungsseite enthält eine „vorgekochte“ Terminfo-Datei, die Sie möglicherweise verwenden, anstatt Ihre eigene zu hacken (aber was macht das für einen Spaß?).


10

Sie müssen festlegen , $MANPAGERum /usr/bin/less -isXden Pfad zu ersetzen , wo je lessnach Bedarf zu finden ist. Der wichtige Teil ist das -X; das -isist der Standardsatz auf weniger übergeben.


9

Angenommen, Ihr Pager ist less, setzen Sie die Umgebungsvariable LESSauf "X". Zum Beispiel ist meins:

LESS="-iMFXRj4a"

Sie können dies in Ihrer ~/.bashrcDatei einstellen

export LESS="-X"

und fügen Sie alle anderen Optionen hinzu, die Sie bereits haben, oder fügen Sie die hinzu, die Sie mögen.


4

Ein anderer Trick - weniger elegant als die anderen Antworten - ist:

man what | more

(Zumindest funktioniert dies unter MacOS X, das normalerweise so ähnlich ist, dass es gültig ist.)


Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.