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.
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.
Odpowiedzi:
Niestety nie ma niezawodnego sposobu mapowania Ctrl-=.
Ze względu na sposób, w jaki ctrl+key
akordy 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+key
kombinacji, 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-M
ma 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.