Eu tenho um script de shell grande que usa uma mistura de espaços e guias. Quero reentrar o arquivo inteiro com base na sintaxe, como o formato do Eclipse. Existe um programa (embelezar?) Que fará isso?
Estou tendo dificuldade em descobrir a lógica com tudo encravado, por exemplo
if [ "$CANCELLATION" ]
then
while test $num -gt 0
do
if [ "$cjb" -gt 0 ]
Aprendeu como chamar funções no Vim, mas isso não funcionou.
Emacs - perdeu todas as novas linhas
linux
indentation
jsymolon
fonte
fonte
M->
é a ligação usual paraend-of-buffer
. Porque tirar as mãos do teclado é ruim.C-x h
, que é executadomark-whole-buffer
.untabify
que tudo fica desmarcado e (2) isso não costumava estar apenas no menu? Merece ser!No Vi / Vim, depois de definir a sintaxe correta do arquivo (
:set syntax=sh
), você pode pressionar: gg=G(ou 1G=G) para corrigir o recuo do arquivo inteiro.Aqui está o comando para formatar o arquivo inteiro no local:
Nota: Faça um backup antes de executar o comando acima.
Para testar a formatação primeiro, editar o arquivo no Vim e execute:
:norm gg=G
.Veja também: Re-recuando código mal recuado no Vi SE
fonte
if
efi
palavras - chave. Talvez algum plugin seja necessário?filetype=sh
(ouft
).Parece que o shfmt pode fazer o truque para você. Ele formata o código shell / bash, que inclui recuo.
fonte
shfmt -i 2 -ci ~/mariadb-qa/pquery-run.sh
Você provavelmente quer o Super Shell Indent . Salve-o em ~ / .vim / indent e quando você for o próximo no vim, execute
:source ~/.vim/indent/sh.vim
Você provavelmente também deseja configurar o recuo inteligente baseado em arquivo em seu arquivo .vimrc
Se você não se importa de o vim mexer com sua formatação, adicione esta linha ao vimrc também.
Enfim, aqui está o que você estava esperando. Na próxima edição de um script de shell no vim, assumindo que você ativou o recuo inteligente e instalou o super shell ident, basta pressionar as seguintes teclas para reinserir o script:
gg=G
fonte