Melhore sua produtividade com dicas avançadas do editor VIM
Intro
Continuando a série de posts sobre o VIM, irei tratar aqui sobre o uso do vim no dia a dia, em especial para desenvolvedores.
Os principais editores de texto trazem algumas comodidades, tais como: syntax highlight, edição multi-linha, mover linhas no arquivo, desfazer/refazer, visualização da árvore de diretórios, navegação por abas, pesquisa por arquivos…
E se eu disser que o VIM tem tudo isso nativamente, e com uma performance que deixa o VS Code, Atom, Sublime com inveja?
Neste post veremos cada uma dessas funcionalidades e como configurá-las no seu vim.
Syntax Hightlight
O vim, por padrão, possui uma opção chamada syntax
. Você consegue ativar de forma interativa qualquer opção no vim acessando o modo de linha de comando através da tecla ESC
. Para ativar o syntax highlight, basta digitar :syntax
e, em seguida, apertar enter.
on
O conjunto de cores também pode ser customizado e a opção destinada a esse tipo de configuração é a colorscheme
. O vim possui alguns já pré-definidos, como o evening
– basta entrar novamente no modo de linha de comando, digitar colorscheme
e apertar enter.
evening
Caso você não goste muito dos colorschemes nativos, a boa notícia é que existem muitos disponíveis na internet – basta realizar o download do colorscheme e colocar no diretório ~.vim/colors/
Numeração
O vim possui, de forma nativa, a opção de numeração de linha: no modo de comando digite set
:
number
Edição Multi-linha
Uma das funcionalidades mais comuns dos editores modernos é poder editar mais de uma linha ao mesmo tempo. Um exemplo recorrente é o ato de comentar/descomentar trechos de código.
No normal mode, aperte Ctrl
e selecione o trecho o qual você deseja comentar:
+ V
Após selecionar o texto, aperte a sequência Shift + i, em seguida digite //
e aperte ESC:
Para descomentar repita o processo de seleção multilinha por bloco com a sequência Ctrl
, selecione os caracteres de comentário e aperte a tecla
+ VS:
Movendo linhas no arquivo
Para mover um trecho de código para 3 linhas abaixo, por exemplo (scroll down), selecione as linhas no modo VISUAL/LINHA com a sequência ‘Shift + V’. Feita a seleção, basta apertar ESC
e inserir o comando :move +3
:
Para retroceder as linhas (scroll up), devemos inverter o sinal do comando move – :move
:
-3
OK. Digitar :move
e número de linhas toda vez que você precisar arrastar o seu trecho para baixo ou para cima parece pouco produtivo. Apesar de gostar de escrever os comandos, por reforçá-los na memória e não precisar customizar as configurações do VIM, esse tipo de feature pede por uma tecla de atalho.
Felizmente, o VIM é customizável. Para criar um atalho no vim, edite o arquivo ~/.vimrc
e adicione ao final a seguinte configuração:
vnoremap <S-Down> :m '>+1<CR>gv=gv
vnoremap <S-Up> :m '<-2<CR>gv=gv
A instrução vnoremap
indica para o vim que, no modo VISUAL, a sequência Shift + seta para baixo e Shift + seta para cima serão remapeadas para as instruções move + 1
e move
respectivamente, de forma não recursiva (ou seja, conseguimos mover de unidade em unidade). Dessa forma, temos mais fluidez ao movimentar nossas linhas. Para verificar esse atalho em ação, selecione o modo VISUAL do vim apertando a tecla V, selecione as linhas que gostaria de movimentar, em seguida aperte Shift + seta para baixo algumas vezes e depois Shift + seta para cima para voltar algumas linhas:
- 2,
O arquivo ~/.vimrc
é como o nosso ~/.bashrc,
mas para as configurações do vim: a cada vez que o vim inicializar, ele vai carregar essas configurações no editor. Nesse sentido, podemos adicionar as configurações de syntax on
, set numbers
. Ao final teremos:
Árvore de diretórios
O vim possui o comando Vexplore
, que abre uma janela interna de navegação, apresentando o conteúdo do diretório vigente:
A questão é que, por padrão, o comando acaba separando a janela em duas metades iguais, além de que ao abrir um arquivo, a navegação no diretório é substituída pelo próprio conteúdo do arquivo.
Nada que uma boa configuração não resolva. Adicione o trecho a seguir no seu arquivo ~/.vimrc
:
let g:netrw_banner = 0
let g:netrw_liststyle = 3
let g:netrw_browse_split = 4
let g:netrw_altv = 1
let g:netrw_winsize = 25
augroup file_drawer
autocmd!
autocmd VimEnter * :Vexplore
augroup END
Vamos entender o que esses parâmetros querem nos dizer:
- let g:netrw_banner =0 : aplica globalmente que o banner do navegador de diretório será escondida
- let g:netrw_liststyle: o netrw possui 4 formas de visualização da lista de arquivos, a de número 3 é a referente à visualização em árvore
- let g:netrw_browse_split: define o comportamento de abertura dos arquivos nas janelas. A opção 4 define que será aberto a janela anterior (de origem)
- let g:netrw_altv: define o tipo de separação da janela para vertical
- let g:netrw_winsize: define o tamanho em percentagem da janela de arquivos – no caso definimos para 25%
- bloco augroup: define que ao inicializar o vim, será executado o comando
:Vexplore
Com isso temos nosso vim com árvore de diretórios preparada:
Para abrir um arquivo, basta posicionar o cursor e apertar Enter. Para navegar entre janelas, utilize o comando CRTL + W seta para direita/esquerda.
Navegação por abas
O vim possui nativamente navegação por abas através do comando :tabnew
. Quando executado sem nenhum parâmetro, ele abre uma nova aba com um novo arquivo. É possível abrir arquivos já existentes com o comando :tabnew <nome_do_arquivo>
. Para navegar entre abas, o vim possui dois comandos, o :tabnext
e o :tabprevious
, que navegam para a próxima aba, ou voltam para a aba anterior – caso chegue à última aba, ele retorna para a primeira, e o seu inverso também é verdadeiro.
Assim como o line scrolling, a navegação entre abas pede por teclas de atalho:
nnoremap <S-Right> :tabnext<CR>
nnoremap <S-Left> :tabprevious<CR>
Ao apertar, no modo NORMAL do vim, a sequência Shift + seta para direita navegará para a próxima aba, e Shift + seta para esquerda retornará à primeira aba:
Pesquisando arquivos por palavra-chave
Para finalizar esse post, uma funcionalidade importante é procurar por palavras chaves na raiz de um diretório. O vim possui o comando :vimgrep,
que funciona de forma similar ao utilitário do Linux, grep.
Para realizar um teste, abra o vim sem nenhum argumento. Em seguida, troque da janela de árvore de diretórios para a janela do arquivo em branco (dica: essa operação poderia ter um atalho também, não acha?) através do comando Ctrl + W + seta para direita.
Após isso, vamos procurar no diretório vigente algum arquivo que contenha a expressão printf
. Para tal, utilizaremos o seguinte comando: :vimgrep
printf *.c | copen 5
Vamos entender o que aconteceu com a execução deste comando:
- aprimeira parte do comando é similar a um grep do Linux, ele vai buscar as ocorrências do padrão printf nos arquivos do diretório cuja extensão seja de código da linguagem C.
- o trecho
(...) |
é uma diretiva para mostrar os resultados (buffer) em uma nova janela, para que você possa visualizar todas as ocorrências. Essa janela é feita a partir de um horizontal split, mas isso pode variar de acordo com o tamanho da janela.
copen 5
O comportamento do vimgrep é abrir a primeira ocorrência na janela vigente. É possível configurar para que essa abertura seja em uma nova aba com a direta:set
(isso também pode ir para o seu
switchbuf+=newtab ~/.vimrc
)
Referências
Muitas dessas dicas foram fruto de pesquisa, experiência própria e, claro, do conhecimento coletivo. Abaixo seguem boas referências sobre o vim:
- Árvore de diretórios sem plugins : https://shapeshed.com/vim-netrw/
- Entendendo as opções do netrw: https://medium.com/usevim/the-netrw-style-options-3ebe91d42456
- Learn Vim Script the Hard Way: https://learnvimscriptthehardway.stevelosh.com/
Líder em Treinamento e serviços de Consultoria, Suporte e Implantação para o mundo open source. Conheça nossas soluções:
About author
Você pode gostar também
Entenda o papel crucial do API Gateway na infraestrutura de TI
Com o aumento considerável do uso dos conhecidos cloud providers, alguns tópicos que eram restritos ao vocabulário dos profissionais de infraestrutura acabaram transbordando para outras áreas, em especial para os
Guia prático para atualizar o Zabbix 4.0 LTS para a 5.0 LTS
Assim como muitas ferramentas Open Source, o Zabbix vem aprimorando seus recursos através de um ciclo contínuo de desenvolvimento sempre tentando atender as necessidades de clientes e da própria comunidade,
4Linux e Zimbra: Parceria promissora para expansão no mercado brasileiro
Com esta parceria a 4Linux passa a oferecer para o mercado brasileiro a versão Network Edition que oferece funcionalidades não existentes na versão community. A 4Linux – Open Software Specialists