Отображение Ctrl со знаком равенства

10

Я пытаюсь отобразить мой Ctrl и знак плюс вместе. Это то, что я пытаюсь в моем vimrc:

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

Однако, похоже, что отображение не запускается. Любые предложения о том, что я могу делать не так? Я использую Macvim.

Джеймс Франко
источник
5
часто
1
Похоже, такой вопрос становится все более частым: VIM, как отобразить клавишу объединения: ctrl + shift + w +,
mMontu
@mMontu Да, это довольно распространенный вопрос. Интересно, будет ли хорошей идеей написать канонический пост о внутреннем представлении символов, терминологических кодах и том, что vim может / не может отобразить.
Джеймс

Ответы:

17

К сожалению, нет надежного способа картирования Ctrl-=.

Из-за того, как ctrl+keyаккорды взаимодействуют с терминалом и представлены внутри, единственные отображения Ctrl, которые Vim гарантированно сможет обнаружить, определены в стандарте ASCII. Вот полный список таких ctrl+keyкомбинаций, и каждый байт представляет.

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

Однако обратите внимание, что большинство из них уже имеют функцию в Vim, а некоторые по существу идентичны / неотличимы от других нажатий клавиш. Например, CTRL-Mимеет тот же код ключа Enter, что и при сопоставлении одного из них вы также неизбежно сопоставляете другой.

Источник: Vim-FAQ

Возможно, вы сможете обойти указанные выше ограничения, настроив свой терминал на отправку определенной последовательности байтов для вашего отображения, как в этом потоке переполнения стека , но это определенно будет проблемой. Лично я бы предпочел просто выбрать другое отображение.

В конечном итоге это может быть исправлено, но это маловероятно, поскольку Vim полагается на терминал, в котором он работает. Однако есть хорошая возможность, что это будет работать в Neovim. Я не знаю, работает ли это сейчас или нет.

Джеймс
источник
1
Хорошо, я буду связывать людей с этим в будущем.
Tumbler41