Mappage Ctrl avec signe égal

10

J'essaie de mapper mon Ctrl et mon signe plus ensemble. Voici ce que j'essaie dans mon vimrc:

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

Cependant, il semble que le mappage ne soit pas déclenché. Des suggestions sur ce que je pourrais faire de mal? J'utilise macvim.

James Franco
la source
5
FAQ 20.4 et 20.5
Christian Brabandt
1
Il semble que ce type de question soit de plus en plus fréquent: VIM comment mapper la touche de combinaison: ctrl + shift + w +,
mMontu
@mMontu Oui, c'est une question assez courante. Je me demande si ce serait une bonne idée d'écrire un article canonique sur la représentation interne des caractères de vim, les termcodes et ce que vim peut / ne peut pas mapper.
James

Réponses:

17

Malheureusement, il n'existe aucun moyen fiable de cartographie Ctrl-=.

En raison de la façon dont les ctrl+keyaccords interagissent avec le terminal et sont représentés en interne, les seuls mappages Ctrl que Vim est garanti de pouvoir détecter sont ceux définis dans la norme ASCII. Voici la liste complète de ces ctrl+keycombinaisons et l'octet que chacune représente.

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

Cependant, notez que la plupart d'entre eux ont déjà une fonction dans Vim, et certains sont essentiellement identiques / indiscernables des autres frappes. Par exemple, CTRL-Ma le même code de touche que Enter, donc si vous mappez l'un de ceux-ci, vous mappez également inévitablement l'autre.

Source: Vim-FAQ

Vous pourrez peut-être contourner les restrictions ci-dessus en configurant votre terminal pour envoyer une certaine séquence d'octets pour votre mappage, comme dans ce thread de débordement de pile , mais ce sera certainement une douleur. Personnellement, je préfère simplement choisir un mappage différent.

Cela pourrait éventuellement être corrigé, mais il est peu probable, car Vim dépend du terminal sur lequel il fonctionne. Cependant, il est possible que cela fonctionne dans Neovim. Je ne sais pas si cela fonctionne en ce moment ou non.

James
la source
1
Bien, je lierai les gens à cela à l'avenir.
Tumbler41