Mapeo Ctrl con signo igual

10

Estoy tratando de asignar mi Ctrl y el signo más juntos. Esto es lo que estoy intentando en mi vimrc:

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

Sin embargo, parece que el mapeo no se está activando. ¿Alguna sugerencia sobre lo que podría estar haciendo mal? Estoy usando macvim.

James Franco
fuente
55
faq 20.4 y 20.5
Christian Brabandt
1
Parece que este tipo de pregunta se está volviendo más frecuente: VIM cómo mapear la tecla combinada: ctrl + shift + w +,
mMontu
@mMontu Sí, es una pregunta bastante común. Me pregunto si sería una buena idea escribir una publicación canónica sobre la representación interna de vim de caracteres, códigos de términos y qué vim puede / no puede mapear.
James

Respuestas:

17

Desafortunadamente, no hay una forma confiable de mapeo Ctrl-=.

Debido a la forma en que los ctrl+keyacordes interactúan con el terminal y se representan internamente, las únicas asignaciones de Ctrl que Vim garantiza que puede detectar son las definidas en el estándar ASCII. Aquí está la lista completa de tales ctrl+keycombinaciones, y el byte que cada una representa.

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

Sin embargo, tenga en cuenta que la mayoría de estos ya tienen una función en Vim, y algunos son esencialmente idénticos a / indistinguibles de otras pulsaciones de teclas. por ejemplo, CTRL-Mtiene el mismo código clave que Enter, por lo tanto, si mapea cualquiera de los dos, también está mapeando inevitablemente el otro.

Fuente: Vim-FAQ

Es posible que pueda sortear las restricciones anteriores configurando su terminal para enviar una determinada secuencia de bytes para su mapeo, como en este hilo de desbordamiento de pila , pero eso definitivamente será un dolor. Personalmente, prefiero elegir un mapeo diferente.

Esto podría solucionarse, pero es poco probable, ya que Vim depende del terminal en el que se está ejecutando. Sin embargo, existe una buena posibilidad de que esto funcione en Neovim. No sé si eso funciona ahora o no.

James
fuente
1
Agradable, vincularé a la gente a esto en el futuro
Tumbler41