Esc-Taste in Vim neu zuordnen

12

Ist es möglich, den EscSchlüssel einem anderen Schlüssel in Vim zuzuordnen ? Wenn ich Vim in einem VMware vSphere-Webclient-Konsolenfenster im Vollbildmodus verwende und die EscTaste drücke, um den Bearbeitungsmodus zu verlassen, wird der Vollbildmodus im Konsolenfenster beendet.

Ich benutze das Vim, das aus dem RHEL YUM Repo stammt. (RHEL 7.5; Vim 7.4).

Beam Davis
quelle
2
Was auch immer Sie tun, ordnen Sie esc nicht etwas anderem zu. Ordnen Sie etwas anderes zu esc.
D. Ben Knoble

Antworten:

10

Normalerweise C-[ist dies auch eine Möglichkeit, den Einfügemodus zu verlassen. Einige Leute möchten jjim Einfügemodus zuordnen, um den normalen Modus zu verlassen. Ich persönlich bevorzuge es, jhwenn meine Finger damit besser gleiten und ich meinen Mittelfinger nicht viel belaste.

Von irgendwo in meinen Neovim-Einstellungen:

inoremap jh <Esc>

Dies wird neu zugeordnet jh, um im Einfügemodus zu entkommen.

Wolltest du das?

Amir Eldor
quelle
3
Strg- [ist dasselbe wie 'ESC'
Herb Wolfe
Ich habe herumgespielt und auch entdeckt, dass dies funktioniert: ": inoremap <F1> <Esc>". Dadurch wird die F1-Taste anstelle der Esc-Taste zugeordnet. Dies kann auf ": ino <F1> <Esc>" gekürzt werden.
Beam Davis
Auch die Großbuchstaben sind nicht erforderlich.
Beam Davis
Ja, Großbuchstaben sind nicht erforderlich und 'ino' ist kürzer zu schreiben, aber in meinen Konfigurationen bevorzuge ich Kürze gegenüber coolen Verknüpfungen. Ich bin froh, dass ich geholfen habe!
Amir Eldor
Während Kürze cool ist und alles ... es ist doch die Seele des Witzes ... Ich vermute, du hast etwas anderes gemeint. Klarheit? Ausführlichkeit? Nicht-Kürze? ;)
B Schicht
6

TL; DR

Es ist eigentlich schön esc, die Startreihe neu zuzuordnen . So entscheiden Sie, worauf Sie es abbilden möchten: Wählen Sie eine Hand und rollen Sie mit Ihren 4 Fingern so schnell wie möglich über den Desktop in die Richtung, die am schnellsten ist. Verwenden Sie diese Option, um auszuwählen, welche Schlüssel neu zugeordnet werden sollen.

Für mich ist es natürlicher, vom kleinen Finger zum Zeigefinger zu rollen. Deshalb habe ich mich für die Verwendung entschieden kj. Außerdem habe ich ein grep -rHin kj ~/src(rekursives grep im übergeordneten Verzeichnis meines gesamten Quellcodes) durchgeführt und keine Übereinstimmungen gefunden.

" esc in insert mode
inoremap kj <esc>

" esc in command mode
cnoremap kj <C-C>
" Note: In command mode mappings to esc run the command for some odd
" historical vi compatibility reason. We use the alternate method of
" existing which is Ctrl-C

Hinweis: Wenn Sie ein Literal eingeben müssen kj(oder was auch immer Ihre Zuordnung ist), geben Sie es einfach mit 2 Sekunden dazwischen ein. (Sie werden sehen, dass der Cursor nach dem ersten Zeichen zögert, sich zu bewegen. Warten Sie, bis er sich bewegt, bevor Sie das zweite eingeben.)


Ich benutze vimseit 19 Jahren. Ich war entsetzt, als Apple seine MacBook Pros so aktualisierte, dass sie eine Touch-Leiste und keinen physischen escSchlüssel hatten. Ich sah einen Beitrag , dass Mapping vorgeschlagen jjund jkzu <Esc>und es gehasst. Aber ich schrieb jedes Mal geduldig auf eine Karteikarte, wenn es mich ärgerte. Ungefähr 15 Minuten später überprüfte ich meine Notizen und fand die obige TL; DR , um Folgendes anzusprechen:

  1. Ich neige dazu, escallot zu drücken, wenn ich nicht im Einfügemodus bin, nur um "sicher zu sein" und jjwürde mir 2 Zeilen fallen lassen.
  2. jkist ein No-Op (runter, rauf), kjist aber natürlicher für meine Hände.
  3. Ich muss auch verwenden esc, um den Befehlsmodus zu verlassen, ohne den Befehl auszuführen.

Ich hoffe, dass ich endlich meine Gewohnheit aufgeben kann, escin anderen Anwendungen zu arbeiten und Fenster zu schließen, wenn ich einige Minuten mit dem Schreiben beschäftigt bin. Ich würde viel lieber streunende kj- Zeichen einfügen , als meine Arbeit zu verlieren!

Bruno Bronosky
quelle
1
Beachten Sie, dass für Ihre cnoremap, wenn das esc aus einer Zuordnung stammt, der Befehl ausgeführt wird, anstatt ihn abzubrechen. Das ist aus Kompatibilitätsgründen mit vi
Christian Brabandt
Sowohl im Einfüge- als auch im Befehlsmodus funktioniert esc weiterhin. Sie haben aber auch diese alternative Home-Row-Kombination, die Sie auch verwenden. Vielleicht bin ich deinem Standpunkt nicht gefolgt.
Bruno Bronosky
2
Der Punkt ist, dass für den Befehlsmodus ein Escape aus dem Mapping den Befehl nicht abbricht, sondern ausführt. Versuchen Sie:ls kj
Christian Brabandt
@ChristianBrabandt du bist richtig. Was kann man dagegen tun? Oder zumindest, wo ist das dokumentiert? Ich kann mir nicht einmal anständige Suchbegriffe einfallen lassen, um etwas darüber zu finden.
Bruno Bronosky
1
Ich erinnere mich nicht, ob dies dokumentiert wird, ich bin vor einigen Jahren über dieses Verhalten gestolpert. Ah, es ist irgendwie dokumentiert bei :h c_Esc: In Makros [...] Start eingegebener Befehl. (Makros enthalten normalerweise auch Zuordnungen)
Christian Brabandt