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:

apt-get install vim-scripts

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 :

map <F10> :NERDTreeToggle<cr>
yaourt -S vim-nerdtree

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 :

nmap <F4> :TlistToggle<cr>

Qu’on pourra installer facilement avec :

yaourt -S vim-taglist

TagList fonctionne avec Ctags

yaourt -S ctags

Il est alors nécéssaire de rajouter dans votre vimrc :

let Tlist_Ctags_Cmd = "/usr/bin/ctags"
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 . Elle permet par exemple, lorsque vous lisez votre code, et que vous employé une fonction de retrouver la définition, en vous placant à sa déclaration en ouvrant même le fichier si besoin.

Par exemple, j’ai un fichier main.py:

init_machin()
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) :

" remap le saut de fichier/class/fnt avec ctags
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.

yaourt -S vim-buftabs

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.

yaourt -S vim-nerdcommenter

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.

yaourt -S vim-doxygentoolkit

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 :

fun<TAB>

J’obtiens :

public function FunctionName ()
{
    // 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.

yaourt -S vim-snipmate

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.

yaourt -S vim-supertabs

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.

yaourt -S vim-pythoncomplete

PHPComplete

Omni Auto-Complétion pour PHP cette fois ci, fonctionne comme expliqué ci-dessus.

yaourt -S vim-phpcomplete

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.

yaourt -S vim-colorsamplerpack

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.

yaourt -S vim-markdown

Dans votre vimrc, vous souhaitez avoir:

au BufRead,BufNewFile *.md set syntax=markdown

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:

{% extends "layout.html" %}

{% block content %}
  Content of the page...
{% endblock %}
yaourt -S vim-htmljinja

Et on l’active pour twig, toujours dans le vimrc :

" On active le support pour twig
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.

yaourt -S vim-rails

En bonus, le thème couleurs de railscasts.

yaourt -S vim-railscasts

Spell-fr

Comme mon français laisse à désirer, avoir un correcteur n’est pas superflu, un incontournable également donc.

yaourt -S vim-spell-fr

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.

yaourt -S vim-git

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:

map <leader>p :!/usr/bin/php -l %<cr>

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.

Vus : 3325
Publié par Nicolas Paris : 149