
Ich versuche herauszufinden, was eine Bash- (oder Vim-)Funktion ist. Hier ist das Szenario. Ich bin in einem Bash-Terminal, bearbeite dann etwas mit Vim und gehe dann zurück zu Bash. In einigen Terminals verschwindet der Vim-Sitzungsbildschirm, um die vorherige Bash-Shell-Aktivität anzuzeigen (das ist, was ich will?).
In anderen Fällen bleibt der Bildschirmpuffer der Vim-Sitzung erhalten (und verbirgt alte Bash-Shell-Aktivitäten). Ich muss entweder den Bildschirm löschen oder warten, bis meine Bash-Aktivität diesen Vim-Sitzungspuffer aus dem Bildschirm schiebt.
Wie kann ich dieses Verhalten steuern, um den Vim-Sitzungspuffer durch die vorherige Bash-Aktivität zu ersetzen?
Danke, Tim
Antwort1
Vim sendet t_ti
und t_ks
an das Terminal, wenn eine Sitzung gestartet wird, und t_te
und t_ke
wenn sie endet. Die Sequenzen t_ti
und t_te
veranlassen das Terminal, zu seinem alternativen Bildschirm zu wechseln.
Sie können in Ihrer ~/.vimrc
Datei festlegen, vim
dass das Dokument beim Beenden auf dem Bildschirm bleibt, indem Sie die folgende Zeile einfügen:
set t_ti=""
Wenn Sie eine ähnliche Zeile haben, sollte das Entfernen dieser Zeile dazu führen, dass beim Beenden der vorherige Terminalinhalt angezeigt wird vim
.
Antwort2
Fügen Sie Ihrer ~/.bash_profile
Datei einfach eine Zeile hinzu, um TERM bei jeder Anmeldung als xterm zu exportieren. Gehen Sie wie folgt vor:
echo "TERM=xterm; export TERM" >> ~/.bash_profile
Wenn Sie sich jetzt das nächste Mal anmelden, ist Ihr Problem behoben. Wenn Sie sich nicht erneut anmelden möchten, haben Sie folgende Möglichkeiten:
// either ...
export TERM=xterm
// ... or ...
TERM=xterm; export TERM
// ... or ...
source ~/.bash_profile
Antwort3
Eine Ursache für dieses Problem kann die Verwendung des Programms sein screen
. Ich stelle fest, dass screen
Vim, wenn ich mich in einer Sitzung befinde, den Terminalstatus nicht zurückgeben kann.
Nicht sicher, ob es spezifisch für den Bildschirm oder für die Kombination aus Bildschirm und Vim in Ubuntu 15.10 ist. Dieselbe Ursache wie oben beschrieben, ich vermute, screen
es liegt an einem anderen Termcap.
Antwort4
Tim. Beide der obigen Antworten sind richtig. Vim schaltet das Terminal auf einen „alternativen Bildschirm“ um, wenn die entsprechende Möglichkeit im Termcap-Eintrag für $TERM definiert ist.
Sie sagen „in einigen Terminals (...funktioniert es richtig...)“ und „in anderen (...funktioniert es falsch...)“.
Verwenden Sie für alle diese Terminals genau denselben Terminalemulator?
Auf meinem Linux-Rechner zu Hause habe ich beispielsweise Gnome-Terminal, Xterm, Konsole, Yakuake und wahrscheinlich noch ein paar mehr, die ich vergessen habe, zusammen mit den „virtuellen Terminals“, die mit Strg-Alt-F1 ... Strg-Alt-F6 oder so verknüpft sind. Die meisten davon funktionieren mit dem „Standard“-Termcap-Eintrag für „Xterm“ – mit Ausnahme der virtuellen Terminals, die eine Terminaldefinition namens „Linux“ haben.
Überprüfen Sie den Terminalemulator selbst und den Wert von $TERM auf funktionierenden und nicht funktionierenden Terminals, um zu sehen, was anders ist. Wenn Sie manchmal als anderer Benutzer angemeldet sind, könnte das auch die Ursache des Problems sein – da jeder Benutzer seine eigene .bashrc-Datei hat, können verschiedene Einstellungen von Benutzer zu Benutzer unterschiedlich sein.
Hoffe, das hilft!
-pbr