Ich habe ein Problem, das bei Verwendung des Mac OS X-Terminals auftritt (TERM = xterm): Manchmal gerät es in einen Zustand, in dem Zeilen, die von oben scrollen, nicht zum Scrollback-Puffer hinzugefügt werden. Ich benutze nicht screen
oder ähnlich; Dies ist eine einfache Bash-Shell innerhalb einer Terminal-Registerkarte.
Dies geschieht nicht sofort nach dem Öffnen eines neuen Tabs. Ich glaube, es ist ein Nebeneffekt von etwas, das ich auf der Registerkarte "Problem" ausgeführt habe. Ich vermute, dass es etwas mit der xterm-Emulation zu tun hat, möglicherweise mit der Bildlaufregion.
Was hat nicht funktioniert:
- Soft- und Hard-Reset über das Shell-Menü
- Laufen
reset
in der Registerkarte
Gibt es eine zuverlässige Möglichkeit, das Terminal und / oder den xterm-Status zurückzusetzen?
Kann jemand eine Erklärung dafür geben, was passiert, auch wenn die einzige Lösung darin besteht, die Registerkarte zu schließen und eine neue zu öffnen?
Antworten:
Dies bedeutet, dass das Terminal den alternativen Bildschirmpuffer verwendet. Es gibt einen Hauptbildschirm, der in das Scrollback-Protokoll blättert, und einen alternativen Bildschirm, der dies nicht tut. "Vollbild" - oder "bildschirmorientierte" Programme wie top, less, emacs, vim und screen schalten das Terminal standardmäßig auf den alternativen Bildschirm um.
Jeder Bildschirm hat seinen eigenen Inhalt und Status. Mit einem alternativen Bildschirm können Programme die gesamte Anzeige übernehmen und beim Beenden den vorherigen Inhalt wiederherstellen, indem sie zum Hauptbildschirm zurückkehren.
Ab Mac OS X Lion 10.7 verfügt Terminal über einen Menüpunkt, mit dem Sie die Bildschirme manuell wechseln können:
Dies wird hauptsächlich bereitgestellt, damit Sie Text vom alternativen Bildschirm anzeigen oder kopieren können, nachdem ein "Vollbild" -Programm beendet wurde. Xterm hat einen ähnlichen Befehl.
Sie können es auch verwenden, um ein Programm manuell zu zwingen, einen bestimmten Bildschirm zu verwenden, um beispielsweise zu steuern, ob die Ausgabe in das Scrollback-Protokoll geht. Wenn Sie derzeit ein Programm verwenden, das explizit zum alternativen Bildschirm wechselt, können Sie es verwirren oder unerwartete Ergebnisse erzielen, wenn Sie es während der Ausführung des Programms auf den Hauptbildschirm zwingen. Verwenden Sie dies daher mit Vorsicht.
Abhängig vom Programm kann es ein Befehlszeilenargument oder eine andere Möglichkeit geben, es so zu konfigurieren, dass stattdessen der Hauptbildschirm verwendet wird. zB ,
less -X
.Einige Terminfo-Einträge wurden speziell entwickelt, um die Verwendung des alternativen Bildschirms zu unterdrücken, z
xterm1
.TERM=xterm1 emacs
führt Emacs auf dem Hauptbildschirm aus. Ich empfehle diexterm1
dauerhafte Verwendung nicht , da dadurch eine Reihe anderer nützlicher Funktionen im Vergleich zur Standardeinstellungxterm-256color
bei Lion deaktiviert werden .Sie können den Bildschirm auch mit dem
tput
Befehl wechseln , um die Escape-Sequenzen innerhalb einer Shell oder eines Skripts auszugeben.tput smcup
wechselt zum alternativen Bildschirm undtput rmcup
zurück zum Hauptbildschirm.Um zu sehen, welches Programm gerade ausgeführt wird, sehen Sie sich den Programmnamen an, der im Terminalfenster oder auf der Registerkarte angezeigt wird, oder sehen Sie sich das Inspektorfenster an ( Shell> Show Inspector ). Der letzte Vorgang in der Liste im Inspektor ist (normalerweise) das aktuelle Programm, das den Bildschirm verwendet. Dies ist diejenige, die Sie konfigurieren müssen, um stattdessen den Hauptbildschirm zu verwenden.
quelle
tput rmcup
ssh
Sitzung mit einem Remotecomputer fehlgeschlagen ist (Zeitüberschreitung?), Während ich in der Sitzung warvi
, und anscheinend das Terminal im alternativen Bildschirm belassen hat (weil mirvi
nie die Möglichkeit gegeben wurde, aufzuräumen). Danach würde jede neuessh
Sitzung im selben Terminal das vom OP beschriebene Problem aufweisen, bis ich das Problem durch Auswahl des Menüelements Ansicht> Alternativer Bildschirm ausblenden gelöst habe .