Formater du code C avec indent et Vim
15 Nov 2012Pour suivre des règles de codage et s’y tenir, rien de tel qu’un outil qui formate automatiquement le code (c’est plus rapide et sans erreurs). Sous Eclipse par exemple, la combinaison de touches Ctrl+Shift+F est indispensable. Mon but est d’obtenir la même fonctionnalité sous Vim pour le langage C.
Indent
L’outil indent
permet de formater un source C selon des règles
définies par des paramètres en ligne de commande. Ces options sont très
nombreuses. Heureusement, il y a quelques styles bien connus
prédéfinis, comme le style K&R (option -kr
).
Pour illustrer son fonctionnement, voici un code source écrit n’importe comment (et qui fait n’importe quoi) :
Pour formater :
indent -st -kr -ts4 file.c
-st
affiche le résultat sur la sortie standard au lieu de modifier le fichier ;-kr
utilise le style K&R ;-ts4
considère 4 espaces comme une tabulation.
Voici le résultat :
C’est plus joli, non ?
vim
Pour pouvoir reformater directement dans Vim, il suffit d’ajouter dans
~/.vimrc
la ligne suivante :
Ensuite, la commande gq
formate (u
annule).
Par exemple, sur le fichier source mal formaté ci-dessus :
- placer le curseur sur la ligne 7 ;
- appuyer sur
V
; - descendre avec
j
(ou la flèche du bas) jusqu’à la ligne 15 ; - taper
gq
.
Ainsi, seule la fonction g
est formatée.
À partir de la ligne 7, le même résultat est obtenu en tapant directement gq8j
(descendre de 8 lignes) ou gq15G
(jusqu’à la ligne 15).
Pour reformater un bloc, le plus simple est de se placer sur une accolade {
ou
}
et de taper gq%
(%
navigue entre les {}
, ()
et []
ouvrant et
fermant).
Pour reformater tout le fichier, il faut taper gggqG
:
gg
amène le curseur au début du fichier ;gq
formate jusqu’à… ;G
va à la fin du fichier.
:wq
GOTO ?! Bouhh c’est maaal !
Sinon, merci pour l’astuce!