Wie sende ich das ESC-Signal an vim, wenn meine Esc-Taste nicht funktioniert?
20
Ich habe ein Problem mit der EscTaste, wenn ich vom Einfügemodus in den interaktiven Modus zurückkehren möchte. Gibt es eine andere Taste, die zum Aufheben des Einfügemodus verwendet wird?
Ungeachtet bestehender Lösungen besteht die herkömmliche Lösung in Vim darin, Schlüssel in Ihrer .vimrcKonfiguration neu zuzuordnen . Tatsächlich haben viele Vim-Benutzer einen leichter erreichbaren Schlüssel neu zugeordnet Esc. Beliebte Auswahlmöglichkeiten sind Ctrl+ Enter, oder jjusw.
Um dies zu aktivieren, .vimrcfügen Sie einfach Folgendes hinzu und laden Sie es neu / starten Sie Vim neu:
Eyup, das ist der Vim-Weg. Ein anderer üblicher Weg, der von Learn Vim the Hard Way (Buch) inoremap jk <Esc>
beworben wird,
Dies ist eine schöne Lösung, aber was ist das Problem, wenn Sie nur Strg + Enter + j verwenden?
Sandra Ross
@SandraRoss Sie können wirklich jede Tastenkombination verwenden, die Sie möchten (beachten Sie jedoch, dass einige, z. B. Strg-Eingabe, unter macOS nicht funktionieren). Das heißt, Strg + Eingabetaste + j ist für mich schwieriger einzugeben, und ich weiß ehrlich gesagt nicht, ob Sie in Vim sogar drei Tastenkombinationen mit zwei nicht modifizierenden Tasten (Eingabetaste, j) konfigurieren können.
Konrad Rudolph
Ok, ich verstehe. Tatsächlich funktioniert Strg + Eingabe + jj bei mir nicht, weil ich tatsächlich MacOS X verwende. Können Sie mir zumindest sagen, was ich nur für Strg + j eingeben muss?
Sandra Ross
@ SandraRoss Dafür inoremap <C-j> <Esc>sollte funktionieren. :-)
Konrad Rudolph
32
Ctrl- [Sendet dasselbe Zeichen wie der physische EscSchlüssel an das Terminal . Letzteres ist im Allgemeinen nur eine Abkürzung für Ersteres.
Ich hatte einmal ein echtes VT220-Terminal und seine Tastatur hat keine EscapeTaste. Drücken Ctrl+[war der einzige Weg, um zu generieren Escape.
Kusalananda
11
Wenn Sie einen einzelnen Schlüssel verwenden möchten, können Sie als pure * nix-Lösung (ohne Vim-Zuordnungen) einen anderen Schlüssel als definieren Esc. Genau wie Emacs Benutzer neu zuordnen CapsLockzu Ctrleinigen Vim - Benutzer (mich eingeschlossen) neu zuordnen CapsLockzu Esc. Dies funktioniert für alle * nix mit X11.
Verwenden Sie xev -event keyboard(und drücken Sie dann CapsLock), um den CapsLockSchlüsselcode für den Schlüssel abzurufen (für mich ist es der Schlüsselcode 66). Dann können xmodmapSie den Schlüssel neu zuordnen:
Um dies bei der Anmeldung zu erhalten, können Sie die xmodmapAusdrücke ~/.Xmodmapwie folgt hinzufügen :
remove Lock = Caps_Lock
keycode 66 = Escape
Obwohl für den zweiten Teil YMMV, da nicht alle Displaymanager laufen ~/.Xmodmap. Sie können hinzufügen müssen , xmodmap .Xmodmapum .xinitrcauf einige von ihnen.
Ich weiß genau was du meinst. Ich habe das früher in dieser Woche gesehen
Sandra Ross
Ich würde das tun, aber ich benutze CapsLock als meine Verfassen-Taste (:
DopeGhoti
6
Sie könnten Strg-C ausprobieren, das funktioniert bei mir und ist meiner Meinung nach einfacher als ESC. Ich bin mir jedoch nicht sicher, ob es standardmäßig aktiviert ist.
STRG-C ist ASCII 0x03, sendet SIGINT an die Shell - ist nicht dasselbe wie ESC.
Katze
@cat Es funktioniert im Prinzip genauso in vim. Ich benutze immer Strg-C anstelle von Esc
Erik W
1
@cat: Du bekommst es kostenlos, weil vim diesen Handler installiert hat. Sie müssen nichts selbst tun. Diese Antwort funktioniert sofort. Ich habe es einfach versucht. Funktioniert es generell für jede Anwendung? Nein, aber darum wurde nicht gebeten.
Leichtigkeit Rennen mit Monica
2
@cat: Wirklich? Der Titel lautet "Wie sende ich das ESC-Signal an vim, wenn meine Esc-Taste nicht funktioniert?" , das einzige Tag ist vim , und das in der Frage beschriebene Problem besteht darin, den Einfügemodus von Vim zu umgehen. Hier ist der zusammenfassende Teil der Frage: "Gibt es einen anderen Schlüssel, der zum Aufheben des Einfügemodus verwendet wird?" Wenn das nicht spezifisch für Vim und seinen Einfügemodus ist, dann weiß ich nicht, was es ist!
Leichtigkeit Rennen mit Monica
1
@LightnessRacesinOrbit Nun, als ich den Titel anfangs sah, war es "Ein weiterer Schlüssel, der für Esc verwendet wurde" und die Frage sah überhaupt nicht spezifisch aus vim. Es tut uns leid! ¯_ (ツ) _ / ¯
Katze
-3
Ctrl + F2
Ist standardmäßig aktiviert. Es müssen keine Einstellungen vorgenommen werden.
Sie wechseln in den normalen Modus, in dem Sie dies tun können :q! or :wq.
[
Antworten:
Ungeachtet bestehender Lösungen besteht die herkömmliche Lösung in Vim darin, Schlüssel in Ihrer
.vimrc
Konfiguration neu zuzuordnen . Tatsächlich haben viele Vim-Benutzer einen leichter erreichbaren Schlüssel neu zugeordnet Esc. Beliebte Auswahlmöglichkeiten sind Ctrl+ Enter, oder jjusw.Um dies zu aktivieren,
.vimrc
fügen Sie einfach Folgendes hinzu und laden Sie es neu / starten Sie Vim neu:Weitere Informationen und Alternativen
quelle
inoremap jk <Esc>
inoremap <C-j> <Esc>
sollte funktionieren. :-)Ctrl- [Sendet dasselbe Zeichen wie der physische EscSchlüssel an das Terminal . Letzteres ist im Allgemeinen nur eine Abkürzung für Ersteres.
quelle
Escape
Taste. DrückenCtrl+[
war der einzige Weg, um zu generierenEscape
.Wenn Sie einen einzelnen Schlüssel verwenden möchten, können Sie als pure * nix-Lösung (ohne Vim-Zuordnungen) einen anderen Schlüssel als definieren Esc. Genau wie Emacs Benutzer neu zuordnen CapsLockzu Ctrleinigen Vim - Benutzer (mich eingeschlossen) neu zuordnen CapsLockzu Esc. Dies funktioniert für alle * nix mit X11.
Verwenden Sie
xev -event keyboard
(und drücken Sie dann CapsLock), um den CapsLockSchlüsselcode für den Schlüssel abzurufen (für mich ist es der Schlüsselcode 66). Dann könnenxmodmap
Sie den Schlüssel neu zuordnen:Um dies bei der Anmeldung zu erhalten, können Sie die
xmodmap
Ausdrücke~/.Xmodmap
wie folgt hinzufügen :Obwohl für den zweiten Teil YMMV, da nicht alle Displaymanager laufen
~/.Xmodmap
. Sie können hinzufügen müssen ,xmodmap .Xmodmap
um.xinitrc
auf einige von ihnen.quelle
Sie könnten Strg-C ausprobieren, das funktioniert bei mir und ist meiner Meinung nach einfacher als ESC. Ich bin mir jedoch nicht sicher, ob es standardmäßig aktiviert ist.
quelle
0x03
, sendet SIGINT an die Shell - ist nicht dasselbe wie ESC.vim
. Es tut uns leid! ¯_ (ツ) _ / ¯Ctrl + F2
Ist standardmäßig aktiviert. Es müssen keine Einstellungen vorgenommen werden.
Sie wechseln in den normalen Modus, in dem Sie dies tun können
:q! or :wq
.quelle
Ctrl+F2
kann eine Flucht senden, aber es wird auch andere Dinge senden.