Das Umschalten in den und aus dem Einfügemodus in Vim erfolgt nicht mehr sofort, da ich tmux verwende. Nach dem Drücken von Escim Einfügemodus dauert es merklich lange, bis der Einfügemodus tatsächlich beendet ist. Nach dem Drücken Escund danach jeder anderen Taste wird sofort umgeschaltet und der Befehl für die danach gedrückte Taste Escausgeführt. Irgendeine Idee, was das verursachen könnte?
Die Vim-Konfiguration ist nicht das Problem, da die Verzögerung nicht auftritt, wenn ich Vim außerhalb von tmux ausführe. Dies hängt also wahrscheinlich irgendwie mit tmux zusammen. Ich benutze übrigens das Gnome-Terminal.
Ebenfalls erwähnenswert ist, dass ich anscheinend keine Tastenzuordnungen in tmux definieren kann Esc, mein Plan war es, zu binden Escan:
bind Escape send-keys ^[
EscLeider scheint es etwas zu binden, denn tmux funktioniert nicht. Das gleiche Problem tritt auch auf dem Bildschirm auf.
quelle
man tmux
, und der Befehl funktioniert bei mir nicht.Ich hatte ein anderes, aber ähnliches Problem, das ich zu lösen versuchte, als ich diese Seite fand. Deshalb werde ich das hier posten, falls es für andere hilfreich ist, die nach dieser Antwort suchen und diese Seite auf die gleiche Weise finden.
Problem: Der vi-Modus in der Bash hat eine Verzögerung, wenn vom Einfügemodus in den Befehlsmodus gewechselt wird
Lösung: Fügen Sie in Ihrer
~/.inputrc
Datei hinzu,set keyseq-timeout n
won
ein niedriger Wert größer als 0 ist. Dern
Standardwert ist 500 ms. Dies ist der Grund für die Verzögerung. Siehe Dokumentation hier .Wenn Sie wissen möchten, in welchem Modus Sie sich befinden, schauen Sie sich Dylan Calis Bash-Fork an .
quelle
0.01
und jetzt ist es erfreulicherweise viel schneller. Vielen Dank!/etc/inputrc
, um es allen Benutzern zur Verfügung zu stellen.Es hört sich so an, als würden Sie ein Mapping verwenden, das mit beginnt ESC. Wenn Sie die ESCTaste drücken , muss vim warten, um festzustellen, ob der nächste Schlüssel derjenige im Mapping ist. Ist dies nicht der Fall, kann es sofort fortgesetzt werden.
Die vim-Konfiguration kann terminalabhängig sein, sodass die Tatsache, dass sie nicht außerhalb von tmux stattfindet, nicht viel bedeutet. Vim kann die
$TERM
Umgebungsvariable abfragen und je nach Wert eine andere Konfiguration auswählen.Da gnome-terminal AFAIK
xterm
als Wert für die$TERM
Variable verwendet und tmux verwendetscreen
, würde ich in all Ihren vim-Konfigurationsdateien nach Einstellungen suchen, die nur verwendet werden, wenn die$TERM
Variable gleich istscreen
. Ich vermute, dass eine vim-Konfigurationsdatei auf Ihrem System Zuordnungen für die Handhabung von Pfeiltasten (die mit demESC
Zeichen beginnen) festlegt, wenn sich das Terminal befindetscreen
.Sie können dies testen, indem Sie die
$TERM
Variable in tmux vorübergehend ändern, bevor Sie vim starten. Wenn Ihre Shell bash ist, rufen Sie vim als aufin tmux und sehen, ob das Problem weiterhin besteht. Sie sollten dies jedoch nicht als Fehlerbehebung verwenden, da es möglicherweise Unterschiede zwischen den Terminalfunktionen von tmux und xterm gibt und Sie möglicherweise auf einige Probleme stoßen.
quelle
TERM=xterm vim
das Problem aber leider nicht beheben. Ich muss etwas tiefer graben.Wie der Titel Screen erwähnt, ist hier die Lösung, um das Verhalten der Escape-Taste in GNU Screen zu korrigieren. (Von hier genommen .)
Hinzufügen
In der
.screenrc
Config - Datei.quelle