Recuo automático do Vim ao salvar

Para recuar arquivos automaticamente ao salvar, adicione ao seu vimrc:

augroup autoindent
au
!
autocmd
BufWritePre * :normal migg=G`i
augroup End

Se desejar fazer isso apenas para determinados arquivos, como arquivos scss, você pode alterar o regex:

autocmd BufWritePre * :normal migg=G`i

Para

autocmd BufWritePre *.scss :normal migg=G`i

Como funciona:

  • autocmd BufWritePre especifica que este é um comando a ser executado automaticamente antes de gravar o buffer no arquivo.
  • *corresponde aos arquivos para executar este comando automático. Se quisermos apenas arquivos de texto, use *.txt, ou apenas arquivos html, use *.html, etc.
  • :normal diz para executar o seguinte comando no modo normal
  • mi coloca uma marca na linha atual e a salva em “i”.
  • gg vai para o topo do arquivo
  • =é o comando de indentação, um movimento é necessário após o =comando
  • Gdiz ao =comando para indentar automaticamente no final do arquivo
  • ` idiz para ir para a marca armazenada emi
  • augroupe au!são para o bem prativos

Para ver mais sobre as marcas:

http://vim.wikia.com/wiki/Using_marks

Para ver mais sobre comandos automáticos:

http://vimdoc.sourceforge.net/htmldoc/autocmd.html
http://learnvimscriptthehardway.stevelosh.com/chapters/12.html

Para ver por que isso está agrupado em um grupo:

http://learnvimscriptthehardway.stevelosh.com/chapters/14.html