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).



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?


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!


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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.