Come riformattare / reindentizzare tutti i file di origine in una determinata directory?


14

Data una directory contenente un albero dei sorgenti, esiste un modo semplice dalla riga di comando per sostituire ogni file sorgente con il suo equivalente splendidamente riformattato?

Tieni presente che di solito un albero di origine per un progetto contiene anche file che non sono di origine e che le fonti stesse potrebbero essere in lingue diverse.

Sto cercando uno strumento che supporti il ​​maggior numero di lingue possibile, perché un progetto di solito contiene fonti in molte lingue diverse. In particolare, sarei alla ricerca di qualcosa che supporti xml / html, javascript, ruby ​​e java.


1
E la lingua è ...?
utente sconosciuto

2
Simile Q & A a StackOverflow: stackoverflow.com/questions/1731357/...
lumbric

Risposte:


7

È possibile utilizzare vim in modalità ex e command, dal terminale.

Per rientrare in un singolo file:

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

Per indentare i file in modo ricorsivo, creare il seguente script:

indent-with-vim.sh

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

Ora digita:

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

Vim farà del suo meglio per riutilizzare i file. È possibile migliorare alcuni tipi di file specifici.

Per XML:

  • Installa xmllint Aggiungi al tuo.vimrc

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

Per migliorare la formattazione di PHP:

Scarica http://www.vim.org/scripts/download_script.php?src_id=15001 (scaricherà un file chiamato php.vim)

Crea le seguenti directory a casa tua:

~/.vim/indent

E copia php.vimsu~/.vim/indent

Se non sei soddisfatto del risultato per qualsiasi tipo di file, puoi cercare alternative sul Web (come htb per HTML, https://github.com/vim-ruby/vim-ruby per miglioramenti per Ruby e così via ).

Ad ogni modo, useresti o la tecnica .vimrc o il file di rientro foo.vim per migliorare il rientro.

Inoltre, puoi modificare i parametri di ricerca da applicare solo ad alcuni tipi specifici, come:

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


0

Non libero, non da riga di comando, probabilmente troppo complicato, ma IntelliJ Idea è un IDE in grado di farlo. Non l'ho provato con java o ruby, ma funziona abbastanza bene con un progetto django (python + javascript + HTML).

Ha anche una vasta gamma di opzioni per configurare cosa riformattare.

Se si tratta di un problema occasionale, puoi scaricare una versione di prova gratuitamente.

Questa è una schermata delle opzioni del formato HTML. È preso da PyCharm (la versione limitata di Python, nessun supporto ruby ​​o java qui) in quanto è quello che uso, ma IntelliJ dovrebbe essere lo stesso ma supporta molte più lingue.

inserisci qui la descrizione dell'immagine


0

Formato Java di Google

Riformatta il codice sorgente Java in conformità con lo stile Java di Google:

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

Suggerimenti:

  • Per farlo su file multipe, utilizzare il --replace opzione, insieme axargs
  • Uso sponge modo da poter sovrascrivere direttamente il file di input
  • Esiste un plugin Eclipse e IntelliJ per eseguire la stessa riformattazione
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.