Depuis mes débuts avec l’éditeur de texte Vim, je ne cesse de découvrir des nouvelles fonctionnalités : Pour faire simple, j’apprécie de plus en plus celui-ci tant ses possibilités sont nombreuses. Cet article sera donc pour moi l’occasion de vous présenter une fonction bien utile : La création d’un modèle de document également appelé template.
Un grand merci à Asher qui m’a permis de découvrir cette astuce !
La création d’un modèle de document consiste à pré-remplir un fichier selon son type, par exemple dans le cadre d’un fichier .sh, on pourrait faire en sorte d’inscrire les informations suivante :
#!/bin/sh ## Variables ## Includes ## Fonctions ## Start
Ainsi lors de la création d’un nouveau fichier .sh, Vim se chargera d’afficher ce modèle. Cet exemple n’est peut-être pas représentatif du confort qu’apporte cette astuce mais pour information et à titre personnel, j’utilise cette fonctionnalité pour l’écriture des articles de ce blog… Je me suis fait un petit modèle de document contenant des balises HTML répondant à mes besoins et au final j’en suis très satisfait !
Une astuce bien pratique qui vous fera gagner du temps .
How to :
Créez en premier lieu le répertoire ~/.vim/templates :
$ mkdir -p ~/.vim/templates
La deuxième tâche consiste en la création de votre modèle, bien évidement vous pouvez y inclure ce que bon vous semble :
vim ~/.vim/templates/bash.sh
Pour finir, il ne vous reste plus qu’a inscrire cette ligne dans votre fichier .vimrc :
au bufNewFile *.sh 0r ~/.vim/templates/bash.sh
Créez un nouveau fichier en spécifiant l’extension pour profiter du template :
$ vim script.sh
Facile, non ?
9 juillet 2011 à 1:09
C’est la manière native de faire un modèle avec vim. Si tu veux placer le curseur directement, par exemple, dans la partie dédiée aux fonctions, il y a ce plugin : http://www.vim.org/scripts/script.php?script_id=1172 .Le vimrc en devient un peu moins « cryptique ».
9 juillet 2011 à 10:26
@Argos : pour déplacer le curseur à l’ouverture de ton buffer avec template, tu peux aussi ajouter une autocmd qui ferait gg}}} ou quelque chose comme ça. Cela me paraît plus simple et donc pas de plugin inutile.
@David : J’utilise ce genre d’astuce aussi mais j’ai ajouter un truc sympa. Je mets des tags reconnaissables dans mon template que mon vimrc change à la volée (exemple, la date, le nom du fichier, etc.). Je te copie/colle l’extrait en question, ça peut donner des idées :
» Gestion des templates
if has(« autocmd »)
augroup templates
autocmd!
autocmd BufNewFile *.html,*.htm call Template(‘html’)
autocmd BufNewFile *.py call Template(‘py’)
autocmd BufNewFile *.sh,*.bat call Template(‘sh’)
autocmd BufNewFile *.c,*.cpp,*.sc,*.h call Template(‘c’)
autocmd BufNewFile *.spr call Template(‘spr’)
augroup END
function! Template(type)
execute « 0r « .g:vimdir. »/templates/skeleton. ».a:type
execute « %s/!!FICHIER!!/ ».expand(« %:t »). »/e »
execute « %s/!!DATE!!/ ».strftime(« %d-%m-%Y »). »/e »
execute « normal! G »
endfunction
endif
9 juillet 2011 à 10:42
Merci pour cette astuce. Ça fait 3 ans que j’utilise vim et je ne connaissais même pas (faut dire que je ne me suis jamais trop penché sur une utilisation avancée).
Excellente astuce en tout cas !
9 juillet 2011 à 10:43
@fifou @Argos : Merci pour vos astuces Je vois que j’ai encore bcp à apprendre et cela est bien plaisant !
9 juillet 2011 à 11:16
Pour accélérer la saisie de code, moi je recommande les plugins Snipmate et Supertabs, qui permettent d’intégrer l’auto-complétion dans vim, qui n’est pas là de base.
Supertabs permet de compléter les fonctions, variables, globales, etc. ce qui est très pratique si on a des noms de fonctions légèrement alambiqués (comme dans .NET avec ses fonctions qui prennent une ligne entière (80 caractères))
22 juillet 2011 à 8:38
Merci à fifou pour l’astuce!
Mais ne pas faire comme moi …
Bien penser à remplacer les », «, ‘ et ’ … -_-
Par contre c’est :
if has(« autocmd »)
Sans les espaces après et avant chaque double guillemets.
Et ça fonctionne niquel.
Fifou, comment as-tu définis ta variable vimdir? Peut importe comment je la définis, il n’en veut pas.
12 août 2011 à 17:28
Sinon pour les modèles, il y a ‘vimplate’