Wie formatiere ich alle Quelldateien in einem bestimmten Verzeichnis neu?

14

Gibt es bei einem Verzeichnis mit einem Quellbaum eine einfache Möglichkeit, von der Befehlszeile aus jede Quelldatei durch ihre schön umformatierte Entsprechung zu ersetzen?

Denken Sie daran, dass ein Quellbaum für ein Projekt normalerweise auch Dateien enthält, die keine Quellen sind, und die Quellen selbst in verschiedenen Sprachen vorliegen können.

Ich suche nach einem Tool, das so viele Sprachen wie möglich unterstützt, da ein Projekt normalerweise Quellen in vielen verschiedenen Sprachen enthält. Insbesondere würde ich nach etwas suchen, das xml / html, Javascript, Ruby und Java unterstützt.

fdierre
quelle
1
Und die Sprache ist ...?
Benutzer unbekannt
2
Ähnliche Fragen und Antworten bei stackoverflow: stackoverflow.com/questions/1731357/…
lumbric

Antworten:

7

Sie können vim im Ex- und Befehlsmodus vom Terminal aus verwenden.

So rücken Sie eine einzelne Datei ein:

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

Um Dateien rekursiv einzurücken, erstellen Sie das folgende Skript:

Einzug mit vim.sh

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

Geben Sie nun Folgendes ein:

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

Vim wird sein Bestes tun, um die Dateien erneut einzulesen. Sie können einige bestimmte Dateitypen verbessern.

Für XML:

  • Installieren Sie xmllint Add zu Ihrem.vimrc

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

So verbessern Sie die PHP-Formatierung:

Laden Sie http://www.vim.org/scripts/download_script.php?src_id=15001 herunter (eine Datei mit dem Namen php.vim wird heruntergeladen).

Erstellen Sie die folgenden Verzeichnisse bei Ihnen zu Hause:

~/.vim/indent

Und kopiere php.vimnach~/.vim/indent

Wenn Sie mit dem Ergebnis für einen Dateityp nicht zufrieden sind, können Sie im Web nach Alternativen suchen (z. B. htb für HTML, https://github.com/vim-ruby/vim-ruby für Verbesserungen für Ruby usw.) ).

In beiden Fällen verwenden Sie die VIMRC-Technik oder die foo.vim-Einrückungsdatei, um die Einrückung zu verbessern.

Sie können die Suchparameter auch so ändern, dass sie nur für bestimmte Typen gelten, z.

find . -iname "*.html" -or -iname "*.xml"
taksan
quelle
2

Installieren Sie das indentPaket und führen Sie das Programm für die Dateien aus.

Psusi
quelle
1
Das unterstützt nur C, nicht wahr? indent.isidore-it.eu/beautify.html
Caesium
Sie denken, fdierre ist auf der Suche nach einem universellen?
Benutzer unbekannt
1
Ja, ich habe nach einem Werkzeug gesucht, das so universell wie möglich ist. Ich habe die Frage geändert, um dies zu präzisieren.
Fdierre
0

Nicht frei, keine Kommandozeile, wahrscheinlich zu kompliziert, aber IntelliJ Idea ist eine IDE, die dies kann. Ich habe es nicht mit Java oder Ruby getestet, aber es funktioniert ganz gut mit einem Django-Projekt (Python + Javascript + HTML).

Es gibt auch eine Reihe von Optionen, mit denen Sie konfigurieren können, was neu formatiert werden soll.

Wenn dies ein einmaliges Problem ist, können Sie eine kostenlose Testversion herunterladen.

Dies ist ein Screenshot der HTML-Formatoptionen. Es stammt aus PyCharm (die Python-beschränkte Version, keine Ruby- oder Java-Unterstützung hier), da es das ist, was ich verwende, aber IntelliJ sollte dasselbe sein, aber viel mehr Sprachen unterstützen.

Bildbeschreibung hier eingeben

Javier Rivera
quelle
0

Google Java Format

Neuformatierung des Java-Quellcodes gemäß 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

Tipps:

  • Verwenden Sie für Multipe-Dateien die --replaceOption zusammen mitxargs
  • Verwenden spongeSie diese Option, um die Eingabedatei direkt zu überschreiben
  • Es gibt ein Eclipse- und ein IntelliJ-Plugin, um dieselbe Neuformatierung durchzuführen
Sridhar Sarnobat
quelle