vim : imap, ab, abbr ne fonctionnent pas ? Solution ici !
Exemple concret : un mapping sous vim c’est ça :
imap ooo Olivier
map
signifie : lorsque je taperais ooo
tu le transformeras en Olivier
.
Le petit i
de imap
juste avant, signifie “uniquement en mode insertion“.
Pourtant, il peut arriver qu’en mode insertion ça ne fonctionne pas ! Si c’est votre cas, il y a une solution très simple : essayez de vous mettre en mode “nopaste
” : essayez de taper l’ordre :
:set nopaste
Puis mettez vous en mode insertion soit “i
” et ré-essayez. Ca devrait fonctionner.
Moi, je le fais par défaut (= j’ai ajouté :set nopaste
dans mon fichier de configuration ~/.vimrc
) au moins je ne suis pas ennuyé.
J’ai posé la question et j’ai eu la réponse sur stackoverflow ici.
L’explication est à peine plus longue. En fait, sous vim
, tout ce qu’on tape est analysé. Si on a fait un imap ooo test
, alors, lorsqu’on fait un copier-coller, et que dedans il y a ooo
, alors vim
va automatiquement faire la transformation. Dans presque tous les cas, lorsqu’on fait un copier coller, on ne veut pas que ça soit modifié ! Donc il faut préciser à vim
: attention, je vais faire un “coller”, alors s’il te plait, désactive tes “mappings”. L’ordre est très simple, il suffit de se mettre en mode paste
et donc de donner l’ordre : :set paste
. Là où on peut être dérouté, c’est que, justement, par défaut, vim
est en mode paste
, autrement dit tous les mappings clavier sont désactivés !
C’est une configuration pour les débutants, mais avec ce que je vous ai appris et tous les liens sur vim
, vous n’êtes plus un débutant, pas vrai ?
Il vous suffit donc d’ajouter :set nopaste
dans votre fichier de configuration ~/.vimrc
. Les (rares) fois où vous aurez un copier coller particulier (par exemple avec la souris), il vous suffira de faire un
:set paste
puis juste après le coller, de dire qu’on a fini, et de ré activer les mappings :
:set nopaste
Aussi simple que ça !