Tengo un script de shell grande que usa una mezcla de espacios y pestañas. Quiero volver a sangrar todo el archivo según la sintaxis, como el formato de Eclipse. ¿Hay un programa (embellecer?) Que hará esto?
Me está costando entender la lógica con todo atascado, p. Ej.
if [ "$CANCELLATION" ]
then
while test $num -gt 0
do
if [ "$cjb" -gt 0 ]
Aprendí a llamar a funciones en Vim pero eso no funcionó.
Emacs: perdió todas las nuevas líneas
linux
indentation
jsymolon
fuente
fuente
M->
es el enlace habitual paraend-of-buffer
. Porque quitar las manos del teclado es malo.C-x h
, que se ejecutamark-whole-buffer
.untabify
ya que todo no se selecciona, y (2) ¿esto no solo solía estar también en el menú? Se merece ser!En Vi / Vim una vez que haya establecido la sintaxis correcta del archivo (
:set syntax=sh
), puede presionar: gg=G(o 1G=G) para corregir la sangría de todo el archivo.Aquí está el comando para formatear todo el archivo en el lugar:
Nota: Realice una copia de seguridad antes de ejecutar el comando anterior.
Para probar primero el formato, editar el archivo en Vim y ejecute:
:norm gg=G
.Ver también: Re-sangrado de código mal sangrado en Vi SE
fuente
if
yfi
palabras clave. Tal vez se requiere algún complemento?filetype=sh
(oft
).Parece que shfmt podría hacer el truco por ti. Formatea el código shell / bash, que incluye sangría.
fuente
shfmt -i 2 -ci ~/mariadb-qa/pquery-run.sh
Probablemente quieras Super Shell Indent . Guárdelo en ~ / .vim / indent y cuando sea el próximo en vim, ejecute
:source ~/.vim/indent/sh.vim
También es probable que desee configurar una sangría inteligente basada en archivos en su .vimrc
Si no le importa que vim juegue con su formato, agregue esta línea también a vimrc.
De todos modos, esto es lo que has estado esperando. La próxima vez que edite una secuencia de comandos de shell en vim, suponiendo que haya activado la sangría inteligente e instalado la identificación de super shell, simplemente presione las siguientes teclas para reiniciar su secuencia de comandos:
gg=G
fuente