Lorsque je copie du code à partir d'un autre fichier, le formatage est foiré, comme ceci:
fun()
{
for(...)
{
for(...)
{
if(...)
{
}
}
}
}
Comment puis-je mettre en forme automatiquement ce code dans vim?
c
vim
code-formatting
Yongwei Xing
la source
la source
Réponses:
Essayez les frappes suivantes:
Explication:
gg
va en haut du fichier,=
est une commande pour corriger l'indentation et luiG
dit d'effectuer l'opération jusqu'à la fin du fichier.la source
J'aime utiliser le programme Artistic Style. Selon leur site Web :
Il fonctionne sous Windows, Linux et Mac. Cela fera des choses comme le retrait, le remplacement des tabulations par des espaces ou vice-versa, la mise en place des espaces autour des opérations comme vous le souhaitez (conversion
if(x<2)
en si( x<2 )
si vous le souhaitez), la mise en accolade sur la même ligne que les définitions de fonction, ou leur déplacement vers le ligne ci-dessous, etc. Toutes les options sont contrôlées par des paramètres de ligne de commande.Pour l'utiliser dans vim, définissez simplement l'option formatprg, puis utilisez la commande gq. Ainsi, par exemple, j'ai dans mon .vimrc:
de sorte que chaque fois que j'ouvre un fichier .cpp, formatprg est défini avec les options que j'aime. Ensuite, je peux taper gg pour aller en haut du fichier et gqGformater le fichier entier selon mes standards. Si je n'ai besoin que de reformater une seule fonction, je peux aller en haut de la fonction, puis taper gq][et elle reformatera juste cette fonction.
Les options que j'ai pour astyle
-T4pb
, ne sont que mes préférences. Vous pouvez parcourir leurs documents et modifier les options pour qu'il formate le code comme vous le souhaitez.Voici une démo. Avant astyle:
Après astyle (gggqG):
J'espère que cela pourra aider.
la source
La commande intégrée pour indenter correctement le code a déjà été mentionnée (
gg=G
). Si vous souhaitez embellir le code, vous devrez utiliser une application externe comme l' indentation . Puisque%
dénote le fichier actuel en mode ex, vous pouvez l'utiliser comme ceci:la source
Le plugin vim-autoformat vous permet de formater votre tampon (ou sélections de tampons) avec une seule commande: https://github.com/Chiel92/vim-autoformat . Il utilise des programmes de format externe pour cela, avec un repli sur la fonctionnalité d'indentation de vim.
la source
Je trouve que ça
clang-format
marche bien.Il existe des exemples de raccourcis clavier dans la documentation de Clang
Je préfère utiliser la
equalprg
reliure en vim. Cela vous permet d'appelerclang-format
avecG=gg
ou d'autres=
options de retrait.Mettez simplement ce qui suit dans votre fichier .vimrc:
la source
sudo apt install clang-format
Vous pouvez peut-être essayer les éléments suivants $ indent -kr -i8 * .c
J'espère que cela vous sera utile!
la source
J'aime comme
indent
mentionné ci-dessus, mais le plus souvent, je ne souhaite formater qu'une petite section du fichier sur lequel je travaille. Puisqueindent
peut prendre le code de stdin, c'est vraiment simple::!indent
.astyle
prend également stdin, vous pouvez donc utiliser la même astuce.la source
Je voulais ajouter que pour éviter qu'il ne soit gâché en premier lieu, vous pouvez taper
:set paste
avant de coller. Après avoir collé, vous pouvez taper:set nopaste
pour des choses comme js-embellir et mettre en retrait pour travailler à nouveau.la source
:set paste!
pour cela, qui bascule la valeur de collage au lieu de la définir. Cela facilite la désactivation car vous pouvez simplement faire défiler en arrière quelques commandes et appuyer sur Entrée.Leur est un outil appelé
indent
. Vous pouvez le télécharger avecapt-get install indent
, puis l'exécuterindent my_program.c
.la source