Mots-clé : nomap

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 !