Как переформатировать / переопределить все исходные файлы в данном каталоге?

14

Имеется ли в директории, содержащей дерево исходных текстов, простой способ из командной строки заменить каждый исходный файл его красиво переформатированным эквивалентом?

Помните, что обычно исходное дерево проекта также содержит файлы, которые не являются исходными, и сами источники могут быть на разных языках.

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

fdierre
источник
1
А язык это ...?
пользователь неизвестен
2
Аналогичные вопросы и ответы в stackoverflow: stackoverflow.com/questions/1731357/…
пояснительная

Ответы:

7

Вы можете использовать vim в режиме ex и command из терминала.

Чтобы сделать отступ для одного файла:

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"
taksan
источник
2

Установите indentпакет, а затем запустите программу на файлы.

psusi
источник
1
Это поддерживает только C, не так ли? indent.isidore-it.eu/beautify.html
Цезий
Вы думаете, fdierre ищет универсальный?
пользователь неизвестен
1
Да, я искал инструмент, который был бы как можно более универсальным. Я изменил вопрос, чтобы уточнить это.
fdierre
0

Не свободная, не командная строка, вероятно, слишком сложная, но IntelliJ Idea - это IDE, способная сделать это. Я не тестировал его с java или ruby, но он неплохо работает с проектом django (python + javascript + HTML).

Он также имеет довольно обширный набор опций для настройки того, что нужно переформатировать.

Если это разовая проблема, вы можете скачать пробную версию бесплатно.

Это скриншот вариантов формата HTML. Он взят из PyCharm (версия с ограниченным числом Python, здесь нет поддержки ruby ​​или java), так как это то, что я использую, но IntelliJ должен быть таким же, но поддерживать гораздо больше языков.

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

Хавьер Ривера
источник
0

Google Java Format

Переформатирует исходный код Java в соответствии с 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

Подсказки:

  • Чтобы сделать это с несколькими файлами, используйте --replaceопцию вместе сxargs
  • Используйте, spongeчтобы вы могли напрямую перезаписать входной файл
  • Есть плагин Eclipse и IntelliJ для того же переформатирования
Шридхар Сарнобат
источник