¿Cómo formatear / reiniciar todos los archivos de origen en un directorio dado?

14

Dado un directorio que contiene un árbol fuente, ¿hay una manera simple desde la línea de comandos para reemplazar cada archivo fuente con su equivalente bellamente reformateado?

Tenga en cuenta que, por lo general, un árbol fuente para un proyecto también contiene archivos que no son fuente, y las fuentes mismas podrían estar en diferentes idiomas.

Estoy buscando alguna herramienta que admita tantos idiomas como sea posible, porque un proyecto generalmente contiene fuentes en muchos idiomas diferentes. En particular, estaría buscando algo compatible con xml / html, javascript, ruby ​​y java.

fdierre
fuente
1
¿Y el idioma es ...?
usuario desconocido el
2
Preguntas y respuestas similares en stackoverflow: stackoverflow.com/questions/1731357/…
lumbric

Respuestas:

7

Puede usar vim en modo ex y comando, desde la terminal.

Para sangrar un solo archivo:

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

Para sangrar archivos de forma recursiva, cree el siguiente script:

sangría-con-vim.sh

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

Ahora, escriba:

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

Vim hará todo lo posible para reindentar los archivos. Puede mejorar algunos tipos de archivos específicos.

Para XML:

  • Instalar xmllint Agregar a su.vimrc

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

Para mejorar el formato PHP:

Descargue http://www.vim.org/scripts/download_script.php?src_id=15001 (descargará un archivo llamado php.vim)

Cree los siguientes directorios en su hogar:

~/.vim/indent

Y copiar php.vima~/.vim/indent

Si no está satisfecho con el resultado para cualquier tipo de archivo, puede buscar alternativas en la web (como htb para HTML, https://github.com/vim-ruby/vim-ruby para mejoras para Ruby, etc.) )

De cualquier manera, usaría la técnica .vimrc o el archivo de sangría foo.vim para mejorar la sangría.

Además, puede cambiar los parámetros de búsqueda para aplicarlos solo a algunos tipos específicos, como:

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

Instale el indentpaquete y luego ejecute el programa en los archivos.

psusi
fuente
1
Eso solo es compatible con C, ¿no? indent.isidore-it.eu/beautify.html
Cesio
¿Crees que Fdierre está buscando una universal?
usuario desconocido el
1
Sí, estaba buscando una herramienta lo más "universal" posible. Modifiqué la pregunta para especificar eso.
fdierre
0

No es gratuito, no es una línea de comandos, probablemente demasiado complicado, pero IntelliJ Idea es un IDE que puede hacer esto. No lo he probado con java o ruby, pero funciona bastante bien con un proyecto django (python + javascript + HTML).

También tiene una amplia gama de opciones para configurar qué formatear.

Si se trata de un problema único, puede descargar una versión de prueba de forma gratuita.

Esta es una captura de pantalla de las opciones de formato HTML. Está tomado de PyCharm (la versión limitada de Python, no es compatible con Ruby o Java aquí), ya que es lo que uso, pero IntelliJ debería ser el mismo pero compatible con muchos más idiomas.

ingrese la descripción de la imagen aquí

Javier Rivera
fuente
0

Google Java Format

Reformatea el código fuente de Java para cumplir con el estilo de Java de Google:

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

Consejos:

  • Para hacerlo en archivos multipe, use la --replaceopción, junto conxargs
  • Use spongepara poder sobrescribir directamente el archivo de entrada
  • Hay un complemento Eclipse e IntelliJ para realizar el mismo formateo
Sridhar Sarnobat
fuente