Commenter du code facilement avec Vim et NerdCommenter

Le billet vient un peu dans le prolongement d’une lecture en cours, un classique de la programmation, The Pragmatic Programmer: From Journeyman to Master. Un petit passage, qui je crois tout à fait vrai, est qu’il est préférable de ne connaître qu’un seul éditeur de texte ou IDE, mais de le connaître parfaitement, ou du moins, le mieux possible, plutôt que de passer de l’un à l’autre en fonction de l’humeur ou du langage. L’éditeur de texte étant quand même un des outils le plus important pour la programmation, il est donc préférable de pouvoir effectuer des actions rapidement, que l’éditeur soit le prolongemment de la pensée, et non un frein à l’écriture de code.

S’il y a bien une action qui arrive régulièrement, surtout lorsqu’on souhaite débugger, c’est de commenter et décommenter tout un bloc de code, et l’idée serait plaisante de pouvoir commenter un peu près à la vitesse de la pensée. C’est ce que propose un des plugins de Vim, NerdCommenter, couplé à quelques astuces propre à Vim, nous verront que commenter du code peut vraiment ce faire rapidement et facilement.

Avant toute chose, l’installation du plugin se fait avec le gestionnaire de paquets de la façon suivante :

  • Pour Arch Linux
pacman -S vim-nerdcommenter
  • Pour Ubuntu ou Debian
apt-get install vim-scripts

Je crois que pour Debian, il faut rajouter le path du plugin dans le fichier de configuration, à vérifier avec la doc de la distribution en question.

J’ai principalement retenu deux façon de commenté avec le plugin, mais il y en a plus, pour tout les gouts. Pour les utiliser, vous devez connaître la touche leader de vim (pour ma part, j’ai mis ça sur la virgule), et si vous ne savez pas, un rapide coup d’œil sur votre moteur de recherche favori donnera la solution.

  • < leader>cs : Commentaires « sexy », place de joli commentaire sur les lignes selectionné en visuel, comme mon code n’est pas toujours sexy, il est bien de compenser avec des commentaires qui le sont :þ
  • < leader>c< espace> : Commentaire moins lisible, mais rapidement mis en place, et surtout l’intérêt de pouvoir les enlever grâce à cette combinaison, on peut également enlever les commentaires sexy avec cette combinaison, alors que l’inverse n’est pas vrai.

Pour plus de détails des possibilités, un petit rtfm s’impose (dans /usr/share/vim-scripts/doc/NERD_commenter.txt pour Debian, et dans /usr/share/vim/vimfiles/doc/NERD_commenter.txt pour Arch Linux)

Déjà avec cela, ça permet de s’amuser à commenter et décommenter du code rapidement, mais quelques astuces pour agrémenter le tout :

Dans le cas d’un code à commenter qui est une fonction entière, par exemple :

ma_fonction ($coin) {
  ...
  ...
}

Le but est de surligner en visuel, le plus rapidement possible toute la fonction (je suis preneur évidemment si une meilleur solution, sans la souris, existe). En étant placé au début de la ligne de la fonction, ce qui est un départ souvant rencontré.

  • shift + v : Permet de se mettre en visuel-bloc visuel-ligne, plus rapide pour selectionner un bloc entier. (Edit: ce n’est pas le visuel-bloc, mais bien le visuel-ligne comme on me le fait remarquer dans les commentaires)
  • $ : Permet d’aller au dernier caractère de la ligne, ‘ { ‘ dans ce cas.
  • % : Permet de se placer directement sur le ‘ } ‘ correspondant, pratique pour se déplacer dans ce cas à la fin de la fonction.
  • < leader>cs : On commente le code précédemment selectionné.

Et voilà, avec une combinaison de quatre étapes, on peut commenter toute une fonction, ce qui resterai valable pour une boucle de condition.

Pour décommenter, c’est encore plus rapide, en utilisant une petite astuce :

  • gv : Permet de selectionner le dernier bloc mis en visuel.
  • < leader>c< espace> : Et on décommente.

De la sorte, ça laisse la possibilité de commenter facilement un bloc de code, ou même une seule ligne, et ainsi mieux se concentrer sur ce que l’on fait plutôt que comment on le fait. Pour ma part, je trouve vraiment ce petit plugin de Vim très pratique, et c’est adopté.

Vus : 2303
Publié par Nicolas Paris : 149