Comment reformater / réindenter tous les fichiers source dans un répertoire donné?


14

Étant donné un répertoire contenant une arborescence source, existe-t-il un moyen simple à partir de la ligne de commande pour remplacer chaque fichier source par son équivalent magnifiquement reformaté?

Gardez à l'esprit que généralement une arborescence source pour un projet contient également des fichiers qui ne sont pas sources, et les sources elles-mêmes peuvent être dans différentes langues.

Je recherche un outil qui prend en charge autant de langues que possible, car un projet contient généralement des sources dans de nombreuses langues différentes. En particulier, je chercherais quelque chose prenant en charge xml / html, javascript, ruby ​​et java.


1
Et la langue est ...?
utilisateur inconnu

2
Questions et réponses similaires sur stackoverflow: stackoverflow.com/questions/1731357/…
lumbric

Réponses:


7

Vous pouvez utiliser vim en mode ex et commande, depuis le terminal.

Pour mettre en retrait un seul fichier:

vim -c "normal gg=G" -e <file-to-indent> <<'EOF'
:wq
EOF

Pour indenter des fichiers de manière récursive, créez le script suivant:

indent-with-vim.sh

vim -c "normal gg=G" -e $1 <<'EOF'
:wq
EOF

Maintenant, tapez:

$ chmod u+x indent-with-vim.sh
$ find . | xargs -I {} ./indent-with-vim.sh {}

Vim fera de son mieux pour réindenter les fichiers. Vous pouvez améliorer certains types de fichiers spécifiques.

Pour XML:

  • Installer xmllint Ajouter à votre.vimrc

    au FileType xml setlocal equalprg=xmllint\ --format\ --recover\ -\ 2>/dev/null
    

Pour améliorer le formatage PHP:

Téléchargez http://www.vim.org/scripts/download_script.php?src_id=15001 (il téléchargera un fichier nommé php.vim)

Créez les répertoires suivants sur votre domicile:

~/.vim/indent

Et copiez php.vimvers~/.vim/indent

Si vous n'êtes pas satisfait du résultat pour n'importe quel type de fichier, vous pouvez rechercher des alternatives sur le Web (comme htb pour HTML, https://github.com/vim-ruby/vim-ruby pour des améliorations pour Ruby, etc.) ).

Dans tous les cas, vous utiliseriez la technique .vimrc ou le fichier d'indentation foo.vim pour améliorer l'indentation.

En outre, vous pouvez modifier les paramètres de recherche à appliquer à certains types spécifiques uniquement, tels que:

find . -iname "*.html" -or -iname "*.xml"


0

Pas gratuit, pas en ligne de commande, probablement trop compliqué, mais IntelliJ Idea est un IDE capable de le faire. Je ne l'ai pas testé avec java ou ruby, mais cela fonctionne plutôt bien avec un projet django (python + javascript + HTML).

Il dispose également d'une gamme assez étendue d'options pour configurer les éléments à reformater.

S'il s'agit d'un problème ponctuel, vous pouvez télécharger un essai gratuit.

Ceci est une capture d'écran des options de format HTML. Il est tiré de PyCharm (la version limitée de python, pas de support ruby ​​ou java ici) car c'est ce que j'utilise, mais IntelliJ devrait être le même mais en supportant beaucoup plus de langues.

entrez la description de l'image ici


0

Format Java de Google

Reformate le code source Java pour qu'il soit conforme à Google Java Style:

https://github.com/google/google-java-format

wget https://github.com/google/google-java-format/releases/download/google-java-format-1.5/google-java-format-1.5-all-deps.jar
java -jar google-java-format-1.5-all-deps.jar /path/to/MyClass.java

Conseils:

  • Pour le faire sur des fichiers multipoints, utilisez l' --replaceoption, avecxargs
  • Utilisez-le spongepour écraser directement le fichier d'entrée
  • Il existe un plugin Eclipse et IntelliJ pour effectuer le même reformatage
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.