Bagaimana memformat ulang / meng-reinden semua file sumber dalam direktori yang diberikan?

14

Diberikan direktori yang berisi pohon sumber, apakah ada cara sederhana dari command-line untuk mengganti setiap file sumber dengan padanan yang diformat ulang dengan indah?

Perlu diingat bahwa biasanya pohon sumber untuk proyek juga berisi file yang bukan sumber, dan sumbernya sendiri bisa dalam bahasa yang berbeda.

Saya mencari beberapa alat yang mendukung bahasa sebanyak mungkin, karena suatu proyek biasanya mengandung sumber dalam banyak bahasa yang berbeda. Secara khusus, saya akan mencari sesuatu yang mendukung xml / html, javascript, ruby, dan java.

fdierre
sumber
1
Dan bahasanya adalah ...?
pengguna tidak diketahui
2
T&J serupa di stackoverflow: stackoverflow.com/questions/1731357/…
lumbric

Jawaban:

7

Anda dapat menggunakan vim dalam mode ex dan command, dari terminal.

Untuk membuat indentasi satu file:

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

Untuk membuat indentasi file secara rekursif, buat skrip berikut:

indent-with-vim.sh

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

Sekarang, ketik:

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

Vim akan melakukan yang terbaik untuk meng-reindent file. Anda dapat meningkatkan beberapa jenis file tertentu.

Untuk XML:

  • Instal xmllint Tambahkan ke.vimrc

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

Untuk meningkatkan format PHP:

Unduh http://www.vim.org/scripts/download_script.php?src_id=15001 (itu akan mengunduh file bernama php.vim)

Buat direktori berikut di rumah Anda:

~/.vim/indent

Dan salin php.vimke~/.vim/indent

Jika Anda tidak puas dengan hasil untuk jenis file apa pun, Anda dapat mencari alternatif di web (seperti htb untuk HTML, https://github.com/vim-ruby/vim-ruby untuk perbaikan untuk Ruby, dan sebagainya) ).

Apa pun itu, Anda akan menggunakan atau teknik .vimrc atau file indentasi foo.vim untuk meningkatkan indentasi.

Anda juga dapat mengubah parameter temukan untuk diterapkan hanya pada beberapa tipe tertentu, seperti:

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

Instal indentpaket dan kemudian jalankan program pada file.

psusi
sumber
1
Itu hanya mendukung C, bukan? indent.isidore-it.eu/beautify.html
Cesium
Anda pikir fdierre mencari yang universal?
pengguna tidak diketahui
1
Ya, saya sedang mencari alat yang 'universal' mungkin. Saya mengubah pertanyaan untuk menentukan itu.
fdierre
0

Tidak gratis, tidak baris perintah, mungkin terlalu rumit, tetapi IntelliJ Idea adalah IDE yang mampu melakukan ini. Saya belum mengujinya dengan java atau ruby, tetapi bekerja cukup baik dengan proyek Django (python + javascript + HTML).

Ini juga memiliki beragam pilihan untuk mengkonfigurasi apa yang harus diformat ulang.

Jika ini adalah masalah satu kali, Anda dapat mengunduh uji coba secara gratis.

Ini tangkapan layar dari opsi format HTML. Ini diambil dari PyCharm (versi terbatas python, tidak ada ruby ​​atau dukungan java di sini) seperti yang saya gunakan, tetapi IntelliJ harus sama tetapi mendukung lebih banyak bahasa.

masukkan deskripsi gambar di sini

Javier Rivera
sumber
0

Google Java Format

Memformat ulang kode sumber Java untuk mematuhi 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

Kiat:

  • Untuk melakukannya pada file multipe, gunakan file --replace opsi, bersama denganxargs
  • Menggunakan sponge sehingga Anda dapat langsung menimpa file input
  • Ada plugin Eclipse dan IntelliJ untuk melakukan format ulang yang sama
Sridhar Sarnobat
sumber