Nesse post iremos ver dicas de indentação de linhas com VIM no Linux. Indentação é usado para ajudar na legibilidade e compreensão do código.
Para quem não sabe, Vim é um editor de texto avançado muito popular no Linux, conhecido por sua alta flexibilidade e poderosas funcionalidades.
Com Indentação, o código fica bem mais organizado e legível e fazemos isso por meio de espaços ou tabulações (tacla tab) para avançar linhas.
Dicas: veja outros posts sobre o VIM no Linux clicando aqui.
Formatando nosso código-fonte, adicionando espaços ou tabulações, ou seja, indentando-o, deixamos o código com uma estrutura visual que destaca blocos de código aninhados.
A indentação não é obrigatório, mas é uma forte recomendação a ser usada. Como não é obrigatório, não indentar não afetará em nada a execução do nosso programa. Ma, saiba que é uma convenção mundial e fundamental para tornar o código mais legível e compreensível.
Usando indentação no VIM do Linux
Para mais informações sobre o VIM, podemos acessar Documentação do Vim e a sua página Wiki também.
Comandos comuns de indentação no vim:
>>
Indenta a linha por espaços equivalentes ashiftwidth
.<<
Desindenta a linha por espaços equivalentes ashiftwidth
.5>>
Indenta 5 linhas.5==
Reindenta 5 linhas.>%
Aumenta a indentação de um bloco entre chaves ou colchetes (posicione o cursor na chave primeiro).=%
Reindenta um bloco entre chaves ou colchetes (cursor na chave).<%
Diminui a indentação de um bloco entre chaves ou colchetes (cursor na chave).]p
Cola texto, alinhando a indentação com o entorno.=i{
Reindenta o ‘bloco interno’, ou seja, o conteúdo do bloco.=a{
Reindenta ‘um bloco’, ou seja, o bloco e as chaves contidas.=2a{
Reindenta ‘dois blocos’, ou seja, este bloco e o bloco contido.>i{
Aumenta a indentação do bloco interno.<i{
Diminui a indentação do bloco interno.
O “>
” não é a seta ok? É o caractere próximo à tecla shift.
Outras dicas interessantes, de acordo com o que listei acima, são:
- gg=G Isso recua o arquivo inteiro!
- == Para recuar a linha atual
- =G Para recuar todas as linhas abaixo da linha atual
- n== Para recuar n linhas abaixo da linha atual. Por exemplo, para recuar 4 linhas abaixo da linha atual use 4==
- =% Para recuar um bloco de código, vá até uma das chaves e use o comando
A variável shiftwidth no Vim
shiftwidth é a variável primária que controla o recuo. Podemos alterar essa variável para definir o número de espaços que uma tecla de deslocamento (como Tab ou Backspace) irá mover o texto.
“shiftwidth” define o número de espaços que um recuo de linha (indentação) irá usar. Ele pode ser configurado usando o comando “:set shiftwidth=N“, substituindo N pelo número desejado de espaços.
N é o número de espaços a serem usados para cada etapa de recuo (automático). Usado para |’cindente’|, |>>|, |<<|, etc.
Muitos usuários alteram o valor padrão do “shiftwidth”, que é 8 espaços, para menos, por acharem muito longo.
Para alterar o número de espaços do tab no Vim, você pode usar o comando “:set tabstop=N”, substituindo N pelo número de espaços desejado.
Outras dicas para programação no VIM
Use o ponto “.” para repetir o último comando
Saiba que o . repete o último comando usado. Usando o ponto, portanto, os comandos de indentação podem ser repetidos de maneira fácil e conveniente.
Reindentando arquivos completos
Uma situação comum é desejarmos que o recuo seja aplicado ou fixado em todo arquivo. Use gg=G para reindentar tudo:
gg=G
Você pode estender essa ideia para vários arquivos:
" Re-indent all your C source code:
:args *.c
:argdo normal gg=G
:wall
Ou vários buffers:
:bufdo normal gg=G:wall
No modo visual
Vjj> Marque visualmente e recue três linhas
No modo de inserção
Estes comandos se aplicam à linha atual:
CTRL-t insere recuo no início da linha
CTRL-d remove o recuo no início da linha
0 CTRL-d remove todo o recuo da linha
Exemplos de comandos para indentação no vim
Estes comandos são úteis quando desejamos recuar um intervalo específico de linhas, sem mover o cursor.
:< e :> Dado um intervalo, aplique recuo, por exemplo.
:4,8> recuar as linhas 4 a 8, inclusive
Recuo usando marcadores
Outra abordagem é por meio de marcadores:
ma Marca o topo do bloco para recuar como marcador 'a'
…mova o cursor para o local final
>'a Recuo do marcador 'a' até a localização atual
Variáveis para controlar o recuo
set expandtab "Use espaços softtabstop em vez de caracteres de tabulação para recuo
set shiftwidth=4 "Recuar 4 espaços ao usar >>, <<, == etc.
set softtabstop=4 "Recuar 4 espaços ao pressionar <TAB>
set autoindent "Manter o recuo da linha anterior
set smartindent "Insere recuo automaticamente em alguns casos
set cindente "Como o smartindent, mas mais rígido e personalizável
Indentação no Vim pelo tipo de arquivo
Vim tem recuo inteligente baseado no tipo de arquivo. Tente adicionar isto ao seu .vimrc:
if has ("autocmd")
"Detecção de tipo de arquivo. Recuo baseado no tipo de arquivo.
Recomendado. recuo do plug-in de tipo de arquivo ativado
endif