Como reformatar / recuperar todos os arquivos de origem em um determinado diretório?


14

Dado um diretório que contém uma árvore de origem, existe uma maneira simples da linha de comando de substituir cada arquivo de origem pelo seu equivalente lindamente reformatado?

Lembre-se de que geralmente uma árvore de origem de um projeto também contém arquivos que não são de origem e as próprias fontes podem estar em idiomas diferentes.

Estou procurando por uma ferramenta que ofereça suporte ao maior número possível de idiomas, porque um projeto geralmente contém fontes em vários idiomas diferentes. Em particular, eu estaria procurando algo que suporte xml / html, javascript, ruby ​​e java.


1
E a linguagem é ...?
usuário desconhecido

2
Perguntas e respostas similares no stackoverflow: stackoverflow.com/questions/1731357/…
lumbric

Respostas:


7

Você pode usar o vim nos modos ex e command, a partir do terminal.

Para recuar um único arquivo:

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

Para recuar arquivos recursivamente, crie o seguinte script:

indent-with-vim.sh

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

Agora, digite:

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

O Vim fará o possível para reindentar os arquivos. Você pode melhorar alguns tipos de arquivos específicos.

Para XML:

  • Instalar xmllint Adicione ao seu.vimrc

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

Para melhorar a formatação do PHP:

Faça o download http://www.vim.org/scripts/download_script.php?src_id=15001 (ele fará o download de um arquivo chamado php.vim)

Crie os seguintes diretórios em sua casa:

~/.vim/indent

E copie php.vimpara~/.vim/indent

Se você não estiver satisfeito com o resultado de qualquer tipo de arquivo, poderá procurar alternativas na Web (como htb para HTML, https://github.com/vim-ruby/vim-ruby para obter melhorias no Ruby e assim por diante. )

De qualquer maneira, você usaria ou a técnica .vimrc ou o arquivo de recuo foo.vim para melhorar o recuo.

Além disso, você pode alterar os parâmetros de localização para aplicar apenas a alguns tipos específicos, como:

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


0

Não é livre, nem linha de comando, provavelmente muito complicado, mas o IntelliJ Idea é um IDE capaz de fazer isso. Eu não testei com java ou ruby, mas funciona muito bem com um projeto django (python + javascript + HTML).

Ele também possui uma ampla variedade de opções para configurar o que reformatar.

Se esse for um problema único, você pode baixar uma avaliação gratuitamente.

Esta é uma captura de tela das opções de formato HTML. Ele foi retirado do PyCharm (a versão limitada do python, sem suporte a ruby ​​ou java aqui) como é o que eu uso, mas o IntelliJ deve ser o mesmo, mas suporta muito mais idiomas.

insira a descrição da imagem aqui


0

Formato Java do Google

Reformata o código-fonte Java para estar em conformidade com o 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

Dicas:

  • Para fazer isso em arquivos com várias faixas, use o --replace opção, juntamente comxargs
  • Usar sponge para substituir diretamente o arquivo de entrada
  • Há um plug-in Eclipse e IntelliJ para executar a mesma reformatação
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.