Учитывая каталог, содержащий исходное дерево, существует ли простой способ из командной строки заменить каждый исходный файл его красиво переформатированным эквивалентом?
Имейте в виду, что обычно исходное дерево проекта также содержит файлы, которые не являются источником, а сами источники могут быть на разных языках.
Я ищу какой-нибудь инструмент, который поддерживает как можно больше языков, потому что проект обычно содержит источники на разных языках. В частности, я бы искал что-то, поддерживающее xml / html, javascript, ruby и java.
Вы могли использовать энергию в исключая и командный режим от терминала.
Располагать единственный файл с отступом:
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"
Переформатирует исходный код Java для соответствия стилю Google 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
так Вы можете напрямую перезаписать входной файл Установите пакет indent
, а затем запустите программу для файлов.
Не свободная, не командная строка, вероятно, слишком сложная, но IntelliJ Idea - это IDE, способная сделать это. Я не тестировал его с java или ruby, но он прекрасно работает с проектом django (python + javascript + HTML).
Он также имеет довольно обширный набор опций для настройки того, что нужно переформатировать.
Если это разовая проблема, вы можете скачать пробную версию бесплатно.
Это скриншот параметров формата HTML. Он взят из PyCharm (версия с ограниченным числом python, здесь нет поддержки ruby или java), так как это то, что я использую, но IntelliJ должен быть таким же, но поддерживать гораздо больше языков.