web-dev-qa-db-fra.com

Comment reformater / réindiquer tous les fichiers source d'un répertoire donné?

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.

14
fdierre

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"
7
taksan

Installez le package indent puis exécutez le programme sur les fichiers.

2
psusi

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.

enter image description here

0
Javier Rivera

Google Java Format

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:

  • Pour le faire sur plusieurs fichiers, utilisez l’option --replace avec xargs.
  • Utilisez sponge pour écraser directement le fichier d'entrée
  • Il existe un plugin Eclipse et IntelliJ pour effectuer le même reformatage
0
Sridhar Sarnobat