Mapowanie Ctrl znakiem równości

10

Próbuję zmapować mój Ctrl i znak plus razem. Oto, co próbuję w moim vimrc:

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

Wydaje się jednak, że mapowanie nie jest uruchamiane. Wszelkie sugestie dotyczące tego, co robię źle? Używam macvim.

James Franco
źródło
5
FAQ 20.4 i 20.5
Christian Brabandt
1
Wygląda na to, że tego rodzaju pytanie staje się coraz częstsze: VIM jak mapować klawisz łączenia: ctrl + shift + w +,
mMontu
@mMontu Tak, to dość częste pytanie. Zastanawiam się, czy dobrym pomysłem byłoby napisanie kanonicznego postu na temat wewnętrznej reprezentacji znaków, kodów termicznych i tego, co vim może / nie może odwzorować.
James

Odpowiedzi:

17

Niestety nie ma niezawodnego sposobu mapowania Ctrl-=.

Ze względu na sposób, w jaki ctrl+keyakordy oddziałują z terminalem i są reprezentowane wewnętrznie, jedynymi mapowaniami Ctrl, które Vim może wykryć, są te zdefiniowane w standardzie ASCII. Oto pełna lista takich ctrl+keykombinacji, a każdy bajt reprezentuje.

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

Zauważ jednak, że większość z nich ma już funkcję w Vimie, a niektóre są zasadniczo identyczne z / nie do odróżnienia od innych naciśnięć klawiszy. np. CTRL-Mma ten sam kod klucza co Enter, więc jeśli mapujesz jeden z nich, nieuchronnie również mapujesz drugi.

Źródło: Vim-FAQ

Możesz być w stanie obejść powyższe ograniczenia, konfigurując terminal tak, aby wysyłał określoną sekwencję bajtów do mapowania, jak w tym wątku przepełnienia stosu , ale na pewno będzie to uciążliwe. Osobiście wolałbym wybrać inne mapowanie.

Może to ostatecznie zostać naprawione, ale jest to mało prawdopodobne, ponieważ Vim polega na terminalu, w którym działa. Istnieje jednak duża szansa, że ​​zadziała w Neovim. Nie wiem czy to działa teraz czy nie.

James
źródło
1
Fajnie, będę w przyszłości łączyć ludzi z tym.
Tumbler41