Ich versuche herauszufinden, was eine Bash- (oder Vim-) Funktion ist. Hier ist das Szenario. Ich bin in einem Bash-Terminal, bearbeite 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 (dies ist, was ich will?).
In anderen Fällen bleibt der Bildschirmpuffer der vim-Sitzung erhalten (versteckt die Aktivität der alten Bash-Shell). Ich muss entweder den Bildschirm löschen oder warten, bis meine Bash-Aktivität den vim-Sitzungspuffer aus dem Bildschirm verdrängt.
Wie kann ich dieses Verhalten steuern, um den vim-Sitzungspuffer durch vorherige Bash-Aktivitäten zu ersetzen?
Vielen Dank, Tim
Antworten:
Vim sendet
t_ti
undt_ks
an das Terminal, wenn eine Sitzung gestartet wirdt_te
undt_ke
wenn sie endet. Die Sequenzent_ti
undt_te
bewirken, dass das Terminal zu seinem alternativen Bildschirm wechselt.In Ihrer
~/.vimrc
Datei können Sievim
das Dokument beim Beenden auf dem Bildschirm belassen, indem Sie die folgende Zeile einfügen:Wenn Sie eine ähnliche Zeile haben, sollte das Entfernen die vorherigen Terminalinhalte beim Beenden anzeigen
vim
.quelle
Eine Ursache für dieses Problem kann die Verwendung des Programms sein
screen
. Ich finde, wenn ich in einerscreen
Sitzung bin, kann vim den Terminalstatus nicht zurückgeben.Ich bin mir nicht sicher, ob es spezifisch für den Bildschirm oder die Bildschirm / Vim-Kombination in Ubuntu 15.10 ist. Dieselbe Ursache wie oben beschrieben, ich denke,
screen
hat unterschiedliche TermCap.quelle
altscreen on
zu ~ / .screenrc wird das Problem für den Bildschirm behoben.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:Wenn Sie sich das nächste Mal anmelden, ist Ihr Problem behoben. Wenn Sie sich nicht erneut anmelden möchten, haben Sie folgende Möglichkeiten:
quelle
export $TERM
?export
der Name (z. B.TERM
in diesem Fall) als Umgebungsvariable und nicht als lokale Variable exportiert wird. Wenn Sieexport $TERM
in diesem Beispiel verwenden, wird die$TERM
Variable aufgelöst, sodassxterm
Sie die Umgebungsvariable festlegen$xterm
, die wahrscheinlich nicht definiert ist. Gute Frage, es sieht auch für mich immer falsch aus.Tim. Beide obigen Antworten sind richtig. Vim schaltet das Terminal auf einen "alternativen Bildschirm" um, wenn die entsprechende Funktion im Eintrag termcap für $ TERM definiert ist.
Sie sagen "in einigen Terminals (... es funktioniert richtig ...)" und "in anderen (... es funktioniert falsch ...)"
Führen Sie für alle diese Terminals denselben Terminalemulator aus?
Zum Beispiel habe ich auf meiner Heim-Linux-Box Gnome-Terminal, xterm, Konsole, yakuake und wahrscheinlich ein paar mehr, die ich vergessen habe, zusammen mit den "virtuellen Terminals", die mit Strg-Alt-F1 verbunden sind ... Strg-Alt-F6 oder so. Die meisten davon können mit dem "Standard" -Termcap-Eintrag für "xterm" arbeiten - mit Ausnahme der virtuellen Terminals, die eine Terminaldefinition mit dem Namen "linux" haben.
Überprüfen Sie den Terminalemulator selbst und den Wert von $ TERM auf funktionierenden und auf nicht funktionierenden Terminals, um festzustellen, was sich unterscheidet. Auch wenn Sie manchmal als ein anderer Benutzer angemeldet sind, kann dies der Kern des Problems sein - da jeder Benutzer seine eigene .bashrc-Datei hat, können verschiedene Einstellungen von Benutzer zu Benutzer unterschiedlich sein.
Ich hoffe, das hilft!
-pbr
quelle
Dies hängt mit Ihrem Terminal und den Einstellungen Ihres Geräts zusammen, die sich mit den Terminalinformationen befassen. Eine tragbare Lösung ist die Verwendung von GNU Screen. Öffnen Sie ein Fenster für Vim und ein anderes für Bash, um die beiden Sitzungen zu trennen. Wenn Sie ein grafisches Terminal wie xterm unter X11, Gnome Terminal unter Gnome oder Terminal.app unter OS X verwenden, können Sie ein neues Fenster oder eine neue Registerkarte öffnen, um denselben Effekt zu erzielen.
quelle