18 plugins pour vim
Avec vim, les plugins s’accumulent rapidement, il est grand temps pour moi d’en faire un petit inventaire et une recherche des paquets installés me retourne 18 résultats. Un coup d’œil dans ce billet à cette liste.
L’avantage d’éditeur de texte de ce genre, c’est de s’adapter au besoin de l’utilisateur, et les plugins recherchés vont dans ce sens. Mes besoins sont ceux d’un codeur amateur, en python et divers langages web, et de l’édition de fichier en tout genre, ainsi que mes billets de blog en markdown.
Note pour Ubuntu et Debian: Je n’ai pas vérifié pour chacun des paquets, un paquet fournis un lots de plugins pour vim, dont la liste est consultable ici, il vous suffit de l’installer avec la commande:
Navigation dans le code
NerdTree
Un classique, permettant d’avoir une arborescence des fichiers et répertoires à partir de la position courante, présenté sur le côté dans une petite fenêtre spécifique, comme je n’aime pas l’avoir en permanence, mais de l’avoir sur le coude est bien pratique, j’ai rajouté donc dans mon vimrc :
Très certainement un des premiers plugin que tout le monde installe. Il existe
bien un navigateur par défaut embarqué dans vim, facilement mémorisable
puisqu’il correspond à la commande :Sex
, cependant NerdTree est plus agréable
à l’utilisation. À essayer de toute urgence si ce n’est déjà fait.
TagList
Très utile, à partir du moment où un fichier commence à contenir plus d’une dizaines de fonctions, pour s’y retrouver simplement, d’une façon proche d’un IDE. Il vous permet d’avoir, un peu à la façon de NerdTree, une petite fenêtre sur le côté, contenant une liste de fonctions, attributs, classes, par fichier, le tout navigable et clickable. Également utile pour « sauter » d’une définition à l’autre au travers de nombreux fichiers. Incontournable encore une fois, il vient bien sûr en complément de gestion de « folders », morceau de code replié sur lui même.
Tout comme NerdTree, je n’aime pas l’avoir constamment ouvert, j’ai rajouté dans mon vimrc le morceau suivant :
Qu’on pourra installer facilement avec :
TagList fonctionne avec Ctags
Il est alors nécéssaire de rajouter dans votre vimrc :
let Tlist_WinWidth = 40
Bon ok, le winWidth n’est pas requis, je le mets en bonus ici.
Astuce: Je mets également ici un indispensable, il permet de naviguer entre les
définition et l’usage de fonction, je l’ai remappé pour l’avoir plus facilement
d’accès, avec la touche
Par exemple, j’ai un fichier main.py:
coin()
sys.exit(0)
Imaginons que je veux voir à quoi ressemble la fonction coin()
, il me suffit
de me placer sur celle ci, d’appuyer sur le raccourcis adéquate. Si par exemple
la définition se trouvais dans utils.py, il va me l’ouvrir au bon endroit et
retrouver celle-ci:
def coin ():
print 'pan'
Très utile donc pour naviguer dans le code, voici dans mon vimrc (note: si les touches ne vous semble pas très cohérente, c’est parce que je suis en bépo, il conviens de trouver plus facile pour l’azerty) :
nmap <leader>d <C-t>
nmap <leader>v <C-]>
FunzzyFinder
La page du plugin donne un bon exemple d’utilisation. Il permet d’ouvrir rapidement des fichiers avec un paterne, utile lorsqu’ils ont des noms à rallonge ou surtout si on connais le nom du fichier, mais pas certain de son emplacement, comme pour consulter un fichier source d’un framework par exemple. Je ne l’utilise quasiment pas, et je songe à le désinstaller.
BufTabs
Une gestion de buffer assez minimaliste, qui a l’avantage de ne pas prendre de
place supplémentaire, je ne l’utilise que depuis peu, car j’étais avant avec
une autre alternative, vim-minibufexpl
, on notera qu’il existe également vim-bufexplorer
. Sûrement une question de choix personnel ici encore. Bien
que les deux autres offre la possibilité d’avoir des tabs cliquables, je m’en
sert surtout comme indicateur visuel, cette fonctionnalité ne me manque donc
pas avec buftabs. Je privilégie donc le gain d’espace.
Commentaire
NerdCommenter
Il permet de commenter une région de code rapidement, en s’adaptant à la syntaxe du langage. J’en avais déjà par ailleurs écris un billet dessus. Et malgré les quelques autres astuces expliqués en commentaires, j’utilise toujours ce plugin. Savoir commenter un morceau de code rapidement est je pense un indispensable.
Doxygen
Doxygen est une syntaxe particulière pour écrire la documentation dans le code. Il permet d’en extraire avec les outils adéquate une documentation claire, lisible sous divers format tel que html et LaTeX, son usage est largement répendu.
Ce plugin permet de générer une structure complète et rapidement conforme à la syntaxe doxygen, de plus, il reconnais les arguments d’une fonction pour l’intégrer dans le template du commentaire. Je ne l’utilise que peu, privilégiant des noms de fonctions et variables explicite qu’a une surabondance de commentaire. Il peut être très utile pour les personnes souhaitant intégrer systématiquement ce genre de commentaire à chaque méthodes et attributs.
Auto-complétion
Snipmate
Pour les personnes écrivant du code, c’est un indispensable, et je ne pourrais pas concevoir qu’un IDE n’intègre pas cette fonction. Il permet d’obtenir un squelette de code en complétion.
Pour prendre un exemple en php, si je tape :
J’obtiens :
{
// code...
}
De plus, la navigation et le remplacement des divers éléments se fait de façon
intelligente en appuyant sur <TAB>
.
L’exemple est pour le PHP, mais ils sont adaptés en fonction du langage édité. Il est à noté que le nom vient de l’éditeur de texte des macs: TextMate.
Supertabs
Permet d’obtenir toute sorte d’auto-complétion avec la touche <TAB>
. Il permet
d’avoir les fonctions, variable et autre en auto-complétion, évitant
les erreurs de saisis, les pertes de temps, mais surtout motive à écrire de vrai nom de variable/fonction, et non pas des diminutifs pour lequel il
deviendra compliqué d’en comprendre la signification passé un mois.
PythonComplete
Omni Auto-Complétion pour Python, permettant d’avoir les fonctions propre à python directement en complétion. Il m’est évidemment utile ces derniers temps puisque, Tyrs, que j’écris en ce moment, est en python.
PHPComplete
Omni Auto-Complétion pour PHP cette fois ci, fonctionne comme expliqué ci-dessus.
Il en existe encore bien d’autre dans le même fonctionnement pour les autres langage, mais il n’est pas sujet ici d’en faire une liste. Les amateurs de C, C++, Java ou autre trouveront leur bonheur dans les dépôts d’AUR.
Coloration
Colorsamplerpack
Un lot de thèmes supplémentaire pour vim, afin de personnaliser encore un peu plus l’apparence. Pas grand chose à dire ici, si ce n’est que certain sont bien fait. Je l’ai utilisé pendant bien longtemps, mais depuis peu, j’utilise un thème moins commun.
Markdown
Depuis que j’ai écris mon billet Ecrire un billet de blog avec Vim et reStructuredText, j’ai suivis les conseils des commentaires, et je n’écris mes billets de blog intégrallement en syntaxe Markdown (Et je m’en sers pour bien d’autres notes). Ce plugin vous permets donc d’avoir la coloration syntaxique pour Markdown.
Dans votre vimrc, vous souhaitez avoir:
Htmljinja
Plugin activant une forme de syntaxe très spécifique, il est utile lors de l’écriture pour Symfony2, avec les templates en Twig. Dont voici un très cours exemple pour donner une idée de la syntaxe:
{% block content %}
Content of the page...
{% endblock %}
Et on l’active pour twig, toujours dans le vimrc :
au BufRead,BufNewFile *.twig set syntax=htmljinja
Extras
Ruby on Rails
Utile pour le développement en Rails, il comporte sont lot d’utilitaire pour ce langage.
En bonus, le thème couleurs de railscasts.
Spell-fr
Comme mon français laisse à désirer, avoir un correcteur n’est pas superflu, un incontournable également donc.
Git
Certain apprécieront le support que vim offre avec git, pour ma part, je préfère l’utiliser de façon extérieur à l’éditeur de texte. Mais c’est un choix personnel, et j’en conviens qu’il puisse servir à certains. J’ai du oublier de l’effacer, il est resté dans la liste du coup.
PHPErrorMarker
Écrit par Frédéric Hardy (bon blog en français pour suivre l’actualité de PHP), il permet d’obtenir simplement les erreurs de syntaxe en php.
Pendant un certain temps, j’étais avec le raccourcis suivant:
Il fait très bien ce qu’on lui demande, le seul problème, c’est qu’il affiche les résultats d’erreurs dans une fenêtre séparé, il est parfois fastidieux de retrouver la bonne ligne d’où provenais l’erreur, surtout s’il y en avait plusieurs.
Ce plugin permet donc de les afficher directement dans le fichier source, avec de bon gros marqueurs, afin de n’en rater aucune. Bien pratique donc lorsqu’on écrit du PHP. Il suffit de taper :make pour le faire fonctionner.
EDIT Un grand merci à Frédéric Hardy, auteur du plugin, de partager une astuce très pratique dans les commentaires du billet :
l’ajout de « let g:phpErrorMarker#autowrite = 1″ et « let g:phpErrorMarker#automake = 1″ dans ton .vimrc permettra le déclenchement automatique de PHPErrorMarker lors de la sauvegarde du fichier. En clair, l’appel à :make devient complètement facultatif.
Gestionnaire de projets
Je ne les utilise pas, donc je ne vais pas m’attarder dessus, mais à titre informatif, vous souhaitez peut être jeter un œil sur les deux plugins suivant:
- Vim-project
- Vim-workspace
Conclusion
Voilà ma petite liste de plugins qui me sert plus ou moins régulièrement. Certain sont incontournable, d’autre plus anecdotique ou spécifique, il est probable que j’en ai manqué quelques-uns de très bien, je ne les connais certainement pas tous. N’hésitez pas à en rajouter si jamais je n’utilise pas votre plugin favoris et que vous souhaitez le partager. Il va sans dire que ces fonctionnalités peuvent être retrouvé également sous Emacs, parfois nativement, parfois à l’aide de plugins également.
Dernier détail, j’ai mon vimrc qui est consultable sur github, ici, si jamais l’envie venait de fouiller un peu.