Mapping jj für die Flucht in macvim funktioniert, aber nicht in terminal vim

677
Kev

In meiner vimrc habe ich:

inoremap jj <ESC> 

Mit dem neuesten macvim kann ich jj schlagen und ich springe vom Einfüge- in den Befehlsmodus, aber mit dem gleichen vimrc mit nur regulärem vim in iterm2 fügt es nur zwei 'j' ein.

Gibt es eine Einstellung für vim oder iterm, die ich einstellen muss, damit es funktioniert?

Ich verwende derzeit Yosemite, aber das Problem bestand auch bei Maverics. Auch die Tastenbelegung funktioniert nicht in der Terminal.app von OSX.

Weitere Untersuchungen scheinen zu zeigen, dass vim das doppelte Drücken einer Taste für mich nicht erkennt. selbst wenn ich tue:

inoremap jj :hello 

Ich sehe immer noch nicht, dass es funktioniert.

0

3 Antworten auf die Frage

0
Corey W

Ich habe bei github etwas über ein iTerm-Problem in Yosemite gefunden. Hier ist das Problem, das durch Homebrews Probleme beschrieben wird .

Verwenden Sie Yosemite? Funktionieren die Tastenkombinationen in Terminal ordnungsgemäß? Laut dieser Ausgabe scheint es etwas mit iTerm in Yosemite zu sein.

Entschuldigung, ich habe nicht angegeben! Ich verwende derzeit Yosemite, ABER das Problem gab es auch in Maverics, auch das Problem existiert in osxs Terminal Kev vor 10 Jahren 0
0
Pak

Versuchen Sie, vom Terminal aus zu laufen :imap. Dies sollte alle Einfügemoduszuordnungen auflisten. Wird das jjMapping angezeigt? Wenn nicht, versuchen Sie, das Mapping manuell von diesem vim aus zu definieren, und prüfen Sie, ob es funktioniert.

Meine Vermutung wäre, dass Ihr Terminal eine andere Version von Vim ausführt, die eine Vimrc von einem anderen Ort aus liest. Versuchen Sie :echo $MYVIMRCsowohl auf dem Terminal vim als auch auf macvim, ob sie auf dieselbe Datei verweisen. Wenn sie sich unterscheiden, können Sie das Mapping einfach zur vimrc hinzufügen, die das Terminal vim verwendet. Es ist jedoch besser, die Unterschiede zwischen den vim-Versionen abzugleichen, damit Sie nicht zwei Konfigurationsdateien verwalten müssen.

Wenn ich imap starte, wird das Keymapping angezeigt. Ich habe bestätigt, dass macvim dieselbe vimrc wie terminal vim verwendet Kev vor 10 Jahren 0
0
Kev

Ich habe die Antwort gefunden! Vor einiger Zeit habe ich ein kleines bisschen in meine vimrc eingefügt, um die Einfügungsverzögerung zu entfernen:

if ! has('gui_running') set ttimeoutlen=10 augroup FastEscape autocmd! au InsertEnter * set timeoutlen=0 au InsertLeave * set timeoutlen=1000 augroup END endif 

Ich habe das entfernt und jj funktioniert jetzt!