Petite astuce brute de décoffrage que je viens de mettre en place et qu'il me faudra intégrer dans la prochaine version de spip.vim.

Je voulais pouvoir, d'une simple touche (donc avec macro derrière) insérer un tag <imgXX|center> à l'endroit où se trouve le curseur. Sachant que XX est le numéro de l'image et que je voudrais en prime que le XX inséré soit celui de l'image qui précède dans le fichier incrémenté de 1.

Attention, c'est vraiment du brut. J'utilise la fonction d'incrémentation [Ctrl] + A (notez le pendant [Ctrl] + X pour décrémenter). Pour l'utiliser, placez-vous en mode commande, à proximité (avant) d'une valeur numérique et pressez [Ctrl] + A. Le curseur se déplace automatiquement sur la prochaine valeur et incrémente de 1. Notez que si vous tapez 10[Ctrl] + A, vous incrémentez de 10. S'il y a un tiret devant la valeur, cela sera interprété comme un nombre négatif.

Voici maintenant mes macros (modes commande et insertion) :

map <F8> mz?<img<CR>Y'zP0<C-A>
imap <F8> <ESC>mz?<img<CR>Y'zP0<C-A>o

Détails :

  • mz place un marqueur nommé z à la ligne courante (utile pour y revenir) ;
  • ?<img<CR> recherche le motif « <img » en remontant le fichier ;
  • Y copie toute la ligne ;
  • 'z on revient sur la ligne marquée z ;
  • 0 on se place en début de ligne ;
  • <C-A> on incrémente la valeur numérique la plus proche (celle que l'on veut évidemment).