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?

Sandra Ross
quelle
13
Pressekontrolle[
Thomas Dickey
3
Einige Vorschläge auch auf vi.stackexchange.com/q/300/9708 .
Guy
2
neues Macbook Pro? <grin>
Rui F Ribeiro
2
Nein, Thinkpad X1 Carbon
Sandra Ross

Antworten:

7

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:

" Shift-Enter
inoremap <S-CR> <Esc>
" Double-j
inoremap jj <Esc>

Weitere Informationen und Alternativen

Konrad Rudolph
quelle
1
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.

DopeGhoti
quelle
3
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:

xmodmap -e 'remove Lock = Caps_Lock' -e 'keycode 66 = Escape'

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.

grochmal
quelle
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.

Vatsug
quelle
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.

Raj
quelle
3
Ctrl+F2kann eine Flucht senden, aber es wird auch andere Dinge senden.
Kusalananda