J'utilise depuis peu de temps les abréviations dans Vim. Comme leur nom l'indique, elles permettent un remplacement automatique du texte tapé.
On peut mettre en place une abréviation à l'aide de la commande :ab[breviate]
.
Il est possible d'utiliser un préfixe pour mettre en place une abréviation pour
un mode précis. A priori, vous allez les utiliser surtout en mode insertion,
vous préférerez donc la commande :ia[bbrev]
.
Par exemple, tapez la commande suivante :
:ia teh the
Et lorsque vous taperez teh en mode insertion, il sera remplacé par the. C'est beau non ? On se croirait dans Word...
Il y mieux. Vous pouvez vous en servir pour faire des snippets. Par exemple,
vous voulez que MAIN
soit remplacé par :
if __name__ == '__main__':
main()
Vous pouvez passer la commande suivante :
:ia MAIN if __name__ == '__main__':<CR>main()
(si votre indentation automatique marche bien, ça ira !)
<CR>
signifie carriage return, c'est le truc de base pour mettre un retour
charriot dans les abréviations et les mappings.
Le problème, c'est que le remplacement aura lieu à chaque fois que vous taperez le terme. Pour éviter un remplacement, vous pouvez l'annuler avec Ctrl+V après la saisie. Ce n'est pas forcément ce que vous souhaitez...
OK, alors voilà ce que vous pouvez faire : vous pouvez utiliser un mapping en mode insertion. Reprenons notre exemple, sauf que nous souhaitons à présent que le remplacement soit validé par appui sur la touche Tab.
:imap MAIN<TAB> if __name__ == '__main__':<CR>main()
Si vous ne vous rappelez pas vos abréviations ou de vos mappings utilisez simplement :
:ia
pour lister vos abréviations et
:imap
pour lister vos mapping.
Si vous voulez mettre en place une liste de snippet pour un type de fichier donné (exemple, pour du C ou du Python), peut-être pouvez vous mettre tous vos ia et imap dans un fichier que vous sourcerez par une autocommand. Mais cela fera l'objet d'un autre post sur Vim.