Mapping Ctrl mit Gleichheitszeichen

10

Ich versuche, meine Strg- und Pluszeichen zusammen zuzuordnen. Folgendes versuche ich in meinem vimrc:

nnoremap <C-=>    : echo "Hello" <CR> 

Es scheint jedoch, dass das Mapping nicht ausgelöst wird. Irgendwelche Vorschläge, was ich falsch machen könnte? Ich benutze Macvim.

James Franco
quelle
5
FAQ 20.4 und 20.5
Christian Brabandt
1
Es scheint, dass diese Art von Frage immer häufiger wird: VIM, wie man den Kombinationsschlüssel abbildet: Strg + Umschalt + W +,
mMontu
@mMontu Ja, das ist eine ziemlich häufige Frage. Ich frage mich, ob es eine gute Idee wäre, einen kanonischen Beitrag über die interne Darstellung von Zeichen, Termcodes und dem, was vim abbilden kann / nicht abbilden kann, zu schreiben.
James

Antworten:

17

Leider gibt es keine zuverlässige Methode zur Zuordnung Ctrl-=.

Aufgrund der Art ctrl+keyund Weise, wie Akkorde mit dem Terminal interagieren und intern dargestellt werden, sind die einzigen Strg-Zuordnungen, die Vim garantiert erkennen kann, die im ASCII-Standard definierten. Hier ist die vollständige Liste solcher ctrl+keyKombinationen und das jeweils dargestellte Byte.

Ctrl-@                 0x00            NUL
Ctrl-A to Ctrl-Z       0x01 to 0x1A
Ctrl-a to Ctrl-z       0x01 to 0x1A
Ctrl-[                 0x1B            ESC
Ctrl-\                 0x1C
Ctrl-]                 0x1D
Ctrl-^                 0x1E
Ctrl-_                 0x1F
Ctrl-?                 0x7F            DEL

Beachten Sie jedoch, dass die meisten davon bereits eine Funktion in Vim haben und einige im Wesentlichen mit anderen Tastenanschlägen identisch sind bzw. nicht von diesen zu unterscheiden sind. hat zB CTRL-Mden gleichen Schlüsselcode wie Enter. Wenn Sie also einen von beiden zuordnen , ordnen Sie unvermeidlich auch den anderen zu.

Quelle: Vim-FAQ

Möglicherweise können Sie die oben genannten Einschränkungen umgehen, indem Sie Ihr Terminal so konfigurieren, dass eine bestimmte Bytesequenz für Ihr Mapping gesendet wird, wie in diesem Stapelüberlauf-Thread. Dies ist jedoch auf jeden Fall ein Problem. Persönlich würde ich lieber ein anderes Mapping auswählen.

Dies könnte möglicherweise behoben werden, ist jedoch unwahrscheinlich, da Vim auf das Terminal angewiesen ist, auf dem es ausgeführt wird. Es besteht jedoch eine gute Möglichkeit, dass dies in Neovim funktioniert. Ich weiß nicht, ob das gerade funktioniert oder nicht.

James
quelle
1
Schön, ich werde in Zukunft Leute damit verbinden.
Tumbler41