Vim: Customização e plugins
Configurar o editor de texto Vim para um ambiente de desenvolvimento pode ser uma tarefa desafiadora para aqueles que estão acostumados com interfaces gráficas mais tradicionais. No entanto, essa escolha não é em vão, pois o Vim oferece uma experiência única e altamente produtiva para programadores e desenvolvedores. Sua eficiência, personalização e riqueza de recursos tornam-no uma escolha popular entre aqueles que buscam uma abordagem mais ágil e direcionada ao teclado na edição de código.
Neste artigo, exploraremos passo a passo como configurar o Vim para um ambiente de desenvolvimento, aproveitando ao máximo seus recursos avançados e adaptando-o às necessidades individuais de cada desenvolvedor. Se você está pronto para elevar sua produtividade e dominar a arte da edição de texto orientada por comandos, este guia é o ponto de partida ideal para mergulhar no fascinante mundo do Vim.
Como configurar o Vim
Como já sabemos, o Vim é um editor que não possui um ambiente gráfico, ou seja, não possui interfaces de configuração. Então, como funciona para configurar o editor?
Os desenvolvedores do editor tiveram a ideia de utilizar um arquivo escrito na própria linguagem de programação do Vim (chamada VimScript), que definiria suas configurações e comportamentos. Este arquivo é opcional e deve ser criado na pasta do usuário para sistemas Linux e OSX com o nome de .vimrc, é nele onde todas as opções do editor ficarão guardadas.
Para começarmos a configurar o Vim, na pasta do usuário vamos executar o comando:
vim .vimrc
O Vim iniciará um arquivo vazio na memória, se não houver um arquivo já existente.
Sua tela provavelmente será um arquivo vazio com o cursor no início. Para começar vamos habilitar linhas numeradas no editor para facilitar a navegação em grandes arquivos. Escreva isso nas primeiras linha:
set encoding=utf-8 " Define o encoding para ler os arquivos
syntax on " Habilita syntax highlight
set cursorline " Destaca a linha que o cursor está
set number " Adiciona números as linhas
Observação: Comentários são feitos com aspas duplas (“).
Após fechar e abrir seu editor, notará que agora as linhas estão numeradas e também o código está devidamente colorido, bem melhor que antes. Outra coisa interessante a se notar é o comando colorscheme, que define o tema de cores do editor. Se o atual não te agradar, basta testar as opções pressionando :colorscheme <Tab> e confirmando com Enter. Após decidir em uma opção, anote no .vimrc e salve, já que as modificações feitas através do : só se aplicam até fechar o editor.
colorscheme desert " Define o tema de cor do editor
Mais a frente veremos como instalar plugins, sendo um tipo de plugin com novos temas de cor.
Vou listar abaixo algumas outras opções interessantes para o editor que eu uso diariamente, mas lembre-se, caso perceba que está faltando algo, basta procurar na internet, é muito provável que exista uma solução pronta.
set tabstop=2 " Define o número de espaços que um <Tab> ocupa
set expandtab " Substitui o caractere <Tab> por espaços no INSERT mode
set mouse=a " Torna possível usar o mouse para selecionar texto
set autoindent " Indenta a próxima linha automaticamente ao pressionar Enter
set listchars=tab:>-,trail:-,eol:$ list " Torna caracteres como <Tab> visíveis
O que são remaps?
No editor Vim, os remaps, também conhecidos como mapeamentos, são uma funcionalidade poderosa que permite aos usuários personalizar a maneira como os comandos são interpretados pelo editor. Basicamente, os remaps permitem atribuir sequências de teclas personalizadas a comandos específicos, substituindo ou estendendo os atalhos de teclado padrão do Vim de acordo com o gosto do usuário.
O editor proporciona diversas maneiras de realizar ações rápidas e efetivas, mas em muitos casos, é possível notar que estamos repetindo várias vezes os mesmos comandos, o que acaba causando justo problema que o Vim deveria resolver. Os remaps resolvem esse problema. Para começar, recomendo que adicione ao início de seu arquivo .vimrc o código abaixo:
let mapleader = " " " Usa <Space> como leader
Esta linha basicamente define o espaço no seu teclado como o comando <leader>. Este comando normalmente é usado para realizar as remaps junto a outra letra. Você pode definir o <leader> como qualquer tecla, entretanto, prefiro o espaço pois é uma tecla de fácil acesso e pouco utilizada fora do INSERT mode.
Com o <leader> já definido, agora vamos escrever a primeira remap. Gosto bastante deste comando e me pego utilizando a todo momento para organizar o fluxo de trabalho.
nnoremap <leader>t :tabnew<CR> " Abre uma nova aba
nnoremap {1} {2} é o comando utilizado, ele mapeia uma sequência de comandos em {1} que sempre que forem executados, o que está em {2} será feito.
Feche e abra seu editor e pressione Espaço e t. Na sequência, uma nova aba no editor será aberta. Antes de fazermos este remap, o único jeito possível de abrir novas abas é através do comando :tabnew, o que torna um pouco trabalhoso de digitar a todo momento. Mas agora, como podemos fazer para mudar de abas? Podemos fazer um remap para isso também, basta adicionar ao seu .vimrc:
" Navegação em abas
noremap <leader>1 1gt
noremap <leader>2 2gt
noremap <leader>3 3gt
noremap <leader>4 4gt
noremap <leader>5 5gt
noremap <leader>6 6gt
noremap <leader>7 7gt
noremap <leader>8 8gt
noremap <leader>9 9gt
noremap <leader>0 :tablast<CR>
Eu gosto de usar o <leader> para controlar as abas, mas é totalmente opcional usar. Por exemplo, caso queira usar o Control ao invés do <leader> , a sintaxe é <C-{1}>, sendo {1} a letra/número desejado. Só tome cuidado para não sobrescrever comandos padrões.
Agora, ao fechar e abrir o editor, será possível navegar nas abas pressionando Espaço e o número, e será aberta uma nova camada de utilidade para o editor. Vou listar abaixo alguns outros remaps que utilizo no meu dia a dia, fique à vontade para copiar e modificá-los.
nnoremap <leader>z :tabnew<CR>:term<CR> " Abre um terminal em uma nova aba
nnoremap <C-s> :w<CR> " Salva o arquivo rapidamente
:nmap cp :let @+ = expand("%")<CR> " Copia o caminho do arquivo aberto
nnoremap <leader>n :new<CR> " Abre uma janela vazia rapidamente
noremap <leader>et :Ex<CR> " Abre o file explorer do Vim
Em comandos que utilizam o :, o símbolo <CR> significa o mesmo que você pressionar Enter para executar o comando.
A possibilidade de remaps é infinita, eu recomendo que vá utilizando o editor e crie suas próprias remaps de acordo com sua necessidade, seja para tornar uma ação mais simples ou realizar várias ações de uma vez.
Plugins
Os plugins para Vim são criados e mantidos por uma comunidade ativa e diversificada de desenvolvedores que contribuem com suas ideias e soluções para aprimorar o editor. Eles abrangem uma ampla variedade de funcionalidades, desde realce de sintaxe avançado para várias linguagens de programação, até integração com sistemas de controle de versão, gerenciadores de projetos, autocompletar, formatação automática, temas de cores e muito mais.
Nesta introdução, exploraremos os conceitos básicos dos plugins para Vim, incluindo como instalá-los, gerenciá-los e como eles podem elevar sua produtividade na edição de texto. Aprenderemos sobre gerenciadores de plugins populares, como o vim-plug, que facilita a instalação e a atualização de plugins. Além disso, abordaremos as melhores práticas para configurar e personalizar os plugins, garantindo que eles integrem harmoniosamente ao seu fluxo de trabalho e atendam às suas necessidades específicas.
O gerenciador de plugins é responsável por instalar plugins e os atualizar automaticamente. Neste artigo, utilizaremos o vim-plug para demonstrar, mas existem diversas opções de gerenciadores. Para começar, vamos visitar o GitHub do vim-plug, e seguir os passos de instalação:
Para sistemas Unix (Linux/OS X)
curl -fLo ~/.vim/autoload/plug.vim --create-dirs \
https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
Para sistemas Windows
iwr -useb https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim |`ni $HOME/vimfiles/autoload/plug.vim -Force
Após executar o comando, vamos ao nosso arquivo .vimrc e separar uma seção para os plugins. Nestes casos, deixo a configuração de plugins abaixo dos remaps e comandos. No topo desta seção, vamos adicionar o seguinte:
" Inicializa o gerenciador vim-plug
call plug#begin()
" <-- Seção para os PLUGINS -->
" Finaliza o gerenciador vim-plug
call plug#end()
Agora que temos o gerenciador de plugins pronto, já podemos instalar novos plugins para o Vim. Vamos realizar a instalação do plugin que considero o mais útil como exemplo: fzf-vim. Este plugin adiciona uma caixa de pesquisa de arquivos que responde com o que você está digitando, facilitando a abertura de arquivos e possibilitando a navegação por grandes projetos.
" Inicializa o gerenciador vim-plug
call plug#begin()
Plug 'junegunn/fzf', { 'do': { -> fzf#install() } }
Plug 'junegunn/fzf.vim'
" Finaliza o gerenciador vim-plug
call plug#end()
Note que para instalar plugins, nós utilizamos a função Plug seguida do caminho do GitHub do plugin. Já que o fzf-vim tem a URL como https://github.com/junegunn/fzf.vim, o comando precisa somente dos dois últimos caminhos.
Após atualizar o .vimrc, salve o arquivo e abra novamente, no editor execute :PlugInstall para instalar o novo plugin. Uma nova janela se abrirá e mostrará o progresso da instalação, assim que finalizar, adicione a seguinte remap ao .vimrc:
nnoremap <leader>f :Files<CR> " Encontra arquivos do diretório atual
Agora, ao iniciar o editor e apertar Espaço e f, uma janela abrirá listando os arquivos do diretório atual, você pode digitar para diminuir a busca e apertar Enter para abrir o arquivo.
Para instalar novos plugins é basicamente o mesmo processo, adicione a função Plug dentro da seção de plugins seguido do URL do plugin. Após isso, salve e execute :PlugInstall para instalar. Segue abaixo uma lista de plugins que utilizo no meu editor, mas há diversos tipos de plugins na internet, seja para tema de cores, ícones, barras de status, novos comandos, etc.
- https://github.com/neoclide/coc.nvim - Adiciona autocomplete e LSP para o editor, similar ao VScode.
- https://github.com/jacoborus/tender.vim - Tema de cores que uso no dia a dia.
- https://github.com/tpope/vim-fugitive - Adiciona suporte a Git.
- https://github.com/ap/vim-css-color - Colore arquivos CSS de acordo com o nome das cores.
- https://github.com/itchyny/lightline.vim - Adiciona uma barra de status mais útil e agradável.
Espero que este guia ajude você a entender melhor a personalização do Vim e o uso de plugins.
Vejo você no meu próximo artigo!
A Revelo Content Network acolhe todas as raças, etnias, nacionalidades, credos, gêneros, orientações, pontos de vista e ideologias, desde que promovam diversidade, equidade, inclusão e crescimento na carreira dos profissionais de tecnologia.