Як переформатувати / повторно відтворити всі вихідні файли в заданому каталозі?


14

Враховуючи каталог, що містить дерево джерела, чи існує простий спосіб з командного рядка замінити кожен вихідний файл його красиво переформатованим еквівалентом?

Майте на увазі, що зазвичай джерельне дерево проекту також містить файли, які не є джерелом, а самі джерела можуть бути різними мовами.

Я шукаю інструмент, який підтримує якомога більше мов, оскільки проект зазвичай містить джерела на багатьох різних мовах. Зокрема, я б шукав щось, що підтримує xml / html, javascript, ruby ​​та java.


1
А мова - це ...?
користувач невідомий

2
Аналогічно Q & А в StackOverflow: stackoverflow.com/questions/1731357 / ...
lumbric

Відповіді:


7

Ви можете використовувати vim у колишньому та командному режимі з терміналу.

Для відступу одного файлу:

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

Для рекурсивного відтворення файлів створіть такий сценарій:

indent-with-vim.sh

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

Тепер наберіть:

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

Vim зробить все можливе, щоб повторно надіслати файли. Ви можете покращити деякі конкретні типи файлів.

Для XML:

  • Встановіть xmllint Додати до свого.vimrc

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

Для покращення форматування PHP:

Завантажте http://www.vim.org/scripts/download_script.php?src_id=15001 (він завантажить файл під назвою php.vim)

Створіть у своєму будинку такі каталоги:

~/.vim/indent

І скопіювати php.vimв~/.vim/indent

Якщо ви не задоволені результатом для будь-якого типу файлів, ви можете шукати альтернативи в Інтернеті (наприклад, htb для HTML, https://github.com/vim-ruby/vim-ruby для покращення для Ruby тощо). ).

У будь-якому випадку для покращення відступу слід використовувати техніку .vimrc або файл відступу foo.vim.

Також ви можете змінити параметри пошуку, які застосовуватимуться лише до певних типів, таких як:

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

2

Встановіть indentпакет, а потім запустіть програму у файлах.


1
Це підтримує лише C, чи не так? indent.isidore-it.eu/beautify.html
Цезій

Ви думаєте, що fdierre шукає універсальний?
користувач невідомий

1
Так, я шукав інструмент, який є максимально універсальним. Я змінив питання, щоб вказати це.
fdierre

0

Не вільний, не командний рядок, мабуть, занадто складний, але IntelliJ Idea - це IDE, який здатний це зробити. Я ще не тестував його на Java або рубіні, але це дуже добре працює з проектом django (python + javascript + HTML).

Він також має досить широкий набір параметрів для налаштування того, що потрібно переформатувати.

Якщо це разова проблема, ви можете завантажити пробну версію безкоштовно.

Це знімок екрана з параметрів формату HTML. Він взятий з PyCharm (версія з обмеженою версією python, тут немає підтримки рубіну чи java), як це я використовую, але IntelliJ повинен бути таким же, але підтримувати набагато більше мов.

введіть тут опис зображення


0

Формат Google Java

Переформатує вихідний код Java, щоб відповідати стилю Java Java:

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

Поради:

  • Щоб зробити це у файлах з декількома файлами, скористайтеся --replaceопцією разом ізxargs
  • Використовуйте sponge щоб ви могли безпосередньо перезаписати вхідний файл
  • Існує плагін Eclipse та IntelliJ для того ж переформатування
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.