Lorsque je copie du code à partir d'un autre fichier, la mise en forme est modifiée, comme ceci :
fun()
{
for(...)
{
for(...)
{
if(...)
{
}
}
}
}
Comment puis-je auto-formater ce code dans vim ?
Lorsque je copie du code à partir d'un autre fichier, la mise en forme est modifiée, comme ceci :
fun()
{
for(...)
{
for(...)
{
if(...)
{
}
}
}
}
Comment puis-je auto-formater ce code dans vim ?
Cela ne fait que mettre en retrait le code. Est-il possible de FORMATER AUTOMATIQUEMENT le tout ?
@Ton van : Voir ma réponse pour la différence (Impossible à expliquer ici dans les commentaires).
J'aime utiliser le programme Artistic Style. Selon leur site web:
Artistic Style est un formateur de code source, de code et d'embellissement pour les langages de programmation C, C++, C# et Java.
Il fonctionne sous Windows, Linux et Mac. Il fera des choses comme l'indentation, remplacer les tabulations par des espaces ou vice-versa, mettre des espaces autour des opérations comme vous le souhaitez (convertir if(x<2)
en if ( x<2 )
si c'est comme vous le souhaitez), mettre les accolades sur la même ligne que les définitions de fonctions, ou les déplacer à la ligne en dessous, etc. Toutes les options sont contrôlées par des paramètres en ligne de commande.
Pour l'utiliser dans vim, il suffit de définir l'option formatprg avec, et ensuite utiliser la commande gq. Par exemple, j'ai dans mon .vimrc:
autocmd BufNewFile,BufRead *.cpp set formatprg=astyle\ -T4pb
ainsi chaque fois que j'ouvre un fichier .cpp, formatprg est défini avec les options que j'aime. Alors, je peux taper gg pour aller en haut du fichier, et gqG pour formater l'ensemble du fichier selon mes normes. Si je dois juste reformater une seule fonction, je peux aller en haut de la fonction, puis taper gq][ et il reformate juste cette fonction.
Les options que j'ai pour astyle, -T4pb
, ne sont que mes préférences. Vous pouvez parcourir leurs docs, et modifier les options pour faire en sorte qu'il formate le code comme vous le souhaitez.
Voici une démo. Avant astyle:
int main(){if(x<2){x=3;}}
float test()
{
if(x<2)
x=3;
}
Après astyle (gggqG):
int main()
{
if (x < 2)
{
x = 3;
}
}
float test()
{
if (x < 2)
x = 3;
}
@Ryan vérifiez vim-autoformat, voir réponse ci-dessous. BTW vim-autoformat utilise également astyle entre autres.
Le demandeur a demandé un formatage automatique, mais a accepté une réponse qui ne fait que l'indentation automatique.
Voici la différence :
ORIGINAL
int main(){if(x<2){x=3;}}
float test()
{
if(x<2)
x=3;
}
AUTOINDENT
int main(){if(x<2){x=3;}}
float test()
{
if(x<2)
x=3;
}
AUTOFORMAT
int main()
{
if (x < 2)
{
x = 3;
}
}
float test()
{
if (x < 2)
x = 3;
}
La commande intégrée pour indenter correctement le code a déjà été mentionnée (gg=G
). Si vous voulez embellir le code, vous devrez utiliser une application externe comme indent. Puisque %
désigne le fichier actuel en mode ex, vous pouvez l'utiliser de cette manière:
:!indent %
Le plugin vim-autoformat vous permet de formater votre tampon (ou les sélections de tampon) avec une seule commande : https://github.com/vim-autoformat/vim-autoformat. Il utilise des programmes de format externes pour cela, avec un retour à la fonctionnalité d'indentation de vim en cas de problème.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.
4 votes
Pour ceux qui cherchent à formater et non seulement à indenter le code, la deuxième réponse (la mienne) aborde cela. Si vous voulez simplement corriger l'indentation, la réponse acceptée est la manière la plus simple.
0 votes
Ce plugin peut aider vimawesome.com/plugin/vim-autoformat vous pouvez l'installer et utiliser
:Autoformat
pour formater le code