Dans un répertoire contenant une arborescence de sources, existe-t-il un moyen simple, en ligne de commande, de remplacer chaque fichier source par son équivalent superbement reformaté?
Gardez à l'esprit qu'habituellement une arborescence de sources pour un projet contient également des fichiers qui ne sont pas des sources et que les sources elles-mêmes peuvent être dans différentes langues.
Je recherche un outil prenant en charge autant de langues que possible, car un projet contient généralement des sources dans plusieurs langues. En particulier, je chercherais quelque chose qui supporte les formats xml/html, javascript, Ruby et Java.
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éindentir les fichiers. Vous pouvez améliorer certains types de fichiers spécifiques.
Pour XML:
Installez xmllint
Ajoutez à votre .vimrc
au FileType xml setlocal equalprg=xmllint\ --format\ --recover\ -\ 2>/dev/null
Pour améliorer le formatage de PHP:
Download 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 maison:
~/.vim/indent
Et copier php.vim
dans ~/.vim/indent
Si vous n'êtes pas satisfait du résultat pour tous les types de fichiers, vous pouvez rechercher des alternatives sur le Web (comme htb pour HTML, https://github.com/vim-Ruby/vim-Ruby pour améliorations pour Ruby, etc.).
De toute façon, 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"
Installez le package indent
puis exécutez le programme sur les fichiers.
Pas libre, pas de ligne de commande, probablement trop compliqué, mais IntelliJ Idea est un IDE qui est capable de le faire. Je ne l'ai pas testé avec Java ou Ruby, mais cela fonctionne assez bien avec un projet Django (python + javascript + HTML).
Il dispose également d'un large éventail 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 provient de PyCharm (le python version limitée, pas de support Ruby ni Java ici) car c'est ce que j'utilise, mais IntelliJ devrait être identique mais supporter beaucoup plus de langues.
Reformate le code source Java pour le rendre 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:
--replace
avec xargs
.sponge
pour écraser directement le fichier d'entrée