[VIM] Créer ses propres snippets Avec Ultisnips
Introduction
Il existe de nombreuses extensions pour gérer les snippets sous vim .
- snipmate
- xpTemplate
- Ultisnips
- etc.
J’utilise personnellement Ultisnips
et cet article concerne cette
extension.
Chacune de ces extensions est livré avec un certain nombre de snippet
déjà
configuré, mais il peut être nécessaire d’en configurer de nouveau. C’est
ce que nous allons voir ici.
Configuration
Il existe plusieurs méthodes pour ajouter de nouveaux snippets
à
Ultisnips
. Certains vous proposeront de créer un dossier Ultisnips
et
de créer des fichiers contenant vos snippets
à l’intérieur 1.
Il existe néanmoins une méthode plus simple.
En effet en regardant un peu l’aide de Ultisnips
nous constatons qu’il
existe une commande UltiSnipsEdit
. Pour afficher l’aide vous pouvez
entrer cette commande dans vim
:help UltiSnips-commands
La commande UltiSnipsEdit
est documenté comme ceci
The UltiSnipsEdit command opens a private snippet definition file for
the current filetype. If no snippet file exists, a new file is created.
If used as UltiSnipsEdit! all public snippet files that exist are taken
into account too. If multiple files match the search, the user gets to
choose the file.
Il convient donc d’ouvrir avec vim
un fichier du type pour lequel nous
souhaitons ajouter un snippet
, exécuter cette commande et ajouter le
code du nouveau snippet
. Dans mon cas je souhaite ajouter un snippet
pour les fichiers
Markdown
.
$ vim fichier.md
... dans vim
:UltiSnipsEdit
vim
nous affichera à ce moment un fichier vide dans lequel nous
pourrons créer nos snippets
(surement
~/.vim/UltiSnips/markdown.snippets
). Vous pouvez ajouter votre snippet
dans ce fichier en suivant la syntaxe officielle. Vous pouvez accéder à
l’aide sur la syntaxe via :help UltiSnips-basic-syntax
.
Voici un exemple de snippet
.
snippet hl "{{<highlight ..>}}..{{</highlight>}}" b
{{<highlight ${1}>}}
${2}
{{</highlight>}}
endsnippet
Ici je crée un snippet
nommé hl
dont la description est {{<highlight ..>}}..{{</highlight>}}
. A l’exécution le snippet
ajoutera le code
définit entre snippet
et endsnippet
et positionnera votre curseur
sur le premier champ à remplir ($1
). Si vous appuyez sur la touche
tab, vous serez positionné sur le second champ.
Note: La configuration de UltiSnips
sera automatiquement rechargée à la
sauvegarde du fichier. Vous n’avez pas à redémarrer vim
.
Aller un peu plus loin
Pour aller un peu plus loin voici deux astuces qui vous permettront
d'être plus à l’aise avec la création de snippets
.
Le snippet usnip
Il existe un snippet nommé usnip
qui crée automatiquement la structure
d’un snippet au format UltiSnips
. Voici ce qui est généré.
snippet Tab_trigger "Description" b
endsnippet
La configuration de l'éditeur
Par défaut quand vous entrez la commande UltiSnipsEdit
l'éditeur de
ferme votre document actuel pour ouvrir le fichier de configuration. Il
est possible de changer de comportement pour ouvrir le fichier de
configuration dans une nouvelle fenêtre (au sens vim
du terme).
Ajouter ceci à votre vimrc.
let g:UltiSnipsEditSplit = 'context'
Conclusion
Si l’utilisation des snippets
est très pratique sous vim, pouvoir les
configurer suivant nos besoins est indispensable. J’espère que cet
article vous aura permis de pouvoir le faire plus simplement.