(Primeiramente, você precisa de um ponto-e-vírgula antes do último }
para que seja válido C; o ponto-e-vírgula deve ser considerado como instruções de terminação em C, em vez de como separar instruções. O recuo automático inteligente pode não funcionar corretamente a menos que você adicione esse ponto e vírgula.)
O comando =
do Vim ( :help =
) pode ser usado para executar código através de um programa de recuo automático, embora exija alguma configuração. A idéia básica é que você defina a opção equalprg
( :help 'equalprg'
) para um programa que aplique o recuo desejado e, em seguida, use =
no modo de comando para executá-lo. =
funciona como outros comandos baseados em movimento do Vim, como d
e y
; por exemplo, ==
recua a linha atual, =ap
indenta um parágrafo ou você pode usar um intervalo visual: ggVG=
recua o arquivo inteiro.
Agora, por padrão, equalprg
é definido como a string vazia, que só faz o recorte por linha básico embutido no Vim. Para fazer o tipo de coisa que você está pedindo, a melhor ferramenta para o trabalho é indent
:
indent
tem uma vasta gama de opções para vários estilos de recuo; por padrão, ele usa o estilo de codificação GNU, mas você provavelmente desejará personalizá-lo para se adequar às preferências do seu projeto. Vejo
recuo do homem para detalhes. Para incluir espaços no valor de equalprg
, é necessário citá-los com uma barra invertida. Por exemplo, se você quiser usar o estilo de recuo K & R, use :set equalprg=indent\ -kr
.
Você também pode fazer com que o comando '=' escolha o recuo apropriado com base no tipo de arquivo, usando :filetype indent on
- type :help filetype
no vim para obter mais informações.
:set autoindent
dirá ao vim para recuar enquanto você digita. Adicionar qualquer um desses comandos (menos o ':' inicial) ao seu arquivo ~ / .vimrc os tornará permanentes.