Guia definitivo de Vim. Quer aprender Vim? Comece por aqui.
Recebo frequentemente perguntas de colegas de trabalho sobre como eu aprendi e como começar a aprender Vim, e o intuito desse artigo é desmitificar um pouco esse famoso editor de texto e dar recursos para que as pessoas percam de vez o medo e experimentar.
Mas afinal de contas oque é o Vim?
O Vim (uma contração de Vi IMproved) é uma cópia com adições do editor de texto vi do Unix e que foi criado por Bill Joy.
Originalmente escrito por Bram Moolenaar, o Vim foi baseado no código do editor Stevie criado para Amiga, sua primeira versão foi lançada em 1991.
O Vim é um editor de texto grátis e de código aberto e sua licença inclui clausulas que encorajam as pessoas que gostam do software a considerarem doar dinheiro para crianças em Uganda.
Diferenças entre Vi e Vim
Vim é compatível com versões anteriores do Vi e mudar do Vi para o Vim é muito simples, você continuará com todas as features que o Vi oferece ganhando muitas outras. Abaixo alguma das principais diferenças, mas se você quer ler a lista completa de features acesse a ajuda com o comando :help vi_diff
(não se preocupe, aprenderemos logo como usar comandos no Vim).
Principais melhorias:
-
desfazer alterações de forma ilimitada: você pode desfazer todos os comandos usados de forma ilimitada.
-
portabilidade: Vi está disponível apenas para sistemas Unix, enquanto o Vim funciona no Windows, Mac OS, em todos os sistemas Unix, entre outros.
-
syntax highlighting: Vim pode ser programado para destacar porções do buffer (não se preocupe, vamos aprender sobre o buffer mais tarde) em diferentes cores e estilos, baseado no tipo de arquivo que está sendo editado.
-
modo de compatibilidade com Vi: Você pode forçar que o Vim se comporte como o vi. No entanto todas as melhorias que fazem dele compatível com o Vi são desligadas e você terá um editor 100% compatível com o Vi.
Como aprender Vim?
A melhor maneira que encontrei para finalmente aprender Vim foi perder o medo de usar e experimentar durante alguns períodos do meu dia.
Vim não é um editor de texto fácil de se aprender e de se tornar produtivo, existe uma curva de aprendizado (Figura 1) que mais se parece com uma parede, mas após escalar essa parede e começar a descer provavelmente você não vai conseguir utilizar outro editor de texto.
Figura 1: Vim Learning Curve: Cortesia: https://pascalprecht.github.io/posts/why-i-use-vim/
A maneira que eu adotei para finalmente começar a aprender o Vim foi em certos períodos do dia (durante uma hora por exemplo), parar de usar o meu editor padrão e continuar a tarefa que estava realizando utilizando o Vim.
Com o passar do tempo e com a customização e instalação de novos plug-ins comecei a me tornar mais produtivo utilizando o Vim do que com outros editores. Com o tempo você também vai desenvolvendo memória muscular e os comandos do Vim começam a se tornar mais naturais.
Outra abordagem é adicionar Vim Mode no seu editor de texto favorito, editores como Atom e VSCode já possuem plug-ins criados pela comunidade que emulam o Vim dentro deles mesmos.
Começando (pule essa sessão caso já o tenha instalado)
Instalação
Linux
Abra seu terminal e digite os seguintes comandos:
sudo apt-get update
sudo apt-get install vim
MacOS
Para instalar a versão mais nova use o homebrew:
brew install vim
Utilizando
Logo após a instalação você poderá executar o comando vim nomedoarquivo.extensão
que o arquivo escolhido será aberto com o Vim.
Movimentos Básicos
A primeira coisa que eu recomendo que seja feita é a execução do comando vimtutor pt
(caso queira a versão em inglês digite apenas vimtutor
) em seu terminal.
Será aberta uma tela com um tutorial de aproximadamente 30 minutos ensinando os movimentos básicos do Vim. Antes de prosseguir com o artigo recomendo que leia atentamente todas as instruções do tutorial, após o seu termino você conhecerá o básico do Vim.
Conceitos Essenciais
Buffers
Buffers no Vim são nada mais que arquivos editáveis que estão disponíveis na memória. Após abrir um arquivo com o Vim você estará criando e consequentemente trabalhando em um buffer.
Explicar buffers fica mais fácil na prática, então vamos lá:
Crie uma pasta qualquer:
$ mkdir brincando_com_buffers && cd brincando_com_buffers
Agora crie dois arquivos:
$ echo 'Vim Rocks!' > vimrocks.txt
$ echo 'In Love With Buffers!' > inlove.txt
Agora abra o primeiro arquivo utilizando o Vim:
$ vim vimrocks.txt
Nesse momento você já está utilizando o buffer do Vim \o/
Agora vamos abrir outro arquivo de dentro do Vim utilizando o comando :badd
ou : bad
:
:badd inlove.txt
Neste momento você terá dois buffers no Vim, para listar os buffers utilize o comando :ls
:
Figura 2: Vim Buffers
O comando :ls
retorna informações sobre cada buffer, como: o identificador único de cada buffer, indicadores de buffer (descritos abaixo), o nome do arquivo e o número da linha da sua posição atual do buffer atual.
Indicadores:
%: buffer na janela atual
#: buffer alternativo, pode ser acessado através das teclas CTRL-6
a: buffer ativo, carregado e visível
h: buffer escondido, carregado, mas não visível
-: buffer que não pode ser modificado
=: buffer somente leitura
+: buffer que foi modificado com sucesso
x: buffer com problemas de leitura
: se não tiver indicador no buffer isso significa que ele ainda não foi carregado
Alguns comandos de Buffer:
:bp - Muda para o buffer anterior
:b2 - Muda para o buffer de número 2
:bn - Muda para o próximo buffer
:ball - Abre todos os buffers em uma janela
:brew - Abre o primeiro buffer da lista
:bd - Deleta o buffer atual
:bd 2 3 - Deleta os buffers de número 2 e 3
Nota: Todos esses comandos podem ser remapeados para comandos de sua escolha (explicarei mais para frente).
Customizando seu Vim (o arquivo .vimrc
e suas configurações)
O Vim é um editor flexível e que pode ser customizado para seu estilo de edição de texto. Uma das primeiras coisas que você deve aprender é criar e manter um arquivo ~/.vimrc
que vai conter todas as suas configurações favoritas, atalhos de teclado, comandos customizados e até extensões de plug-ins (falaremos mais na frente).
O .vimrc
é um arquivo escrito utilizando uma linguagem de programação chamada vimscript. Sendo assim, seu .vimrc
pode conter variáveis, condicionais, definições de funções e por aí.
Caso ainda não possua esse arquivo ele deverá ser criado na raiz de seu usuário. No meu caso ele está em /Users/adrianolisboa/.vimrc
.
Vamos utilizar o site VimConfig para gerar uma configuração básica. Abra o site, desmarque ou marque as opções que não queira. Caso ainda não entenda oque essas opções significam, simplesmente abra seu .vimrc
recém criado e cole as configurações que aparecem no input do lado direito do site.
Exemplo de configuração que foi gerada pelo site:
Figura 3: Exemplo de configuração do .vimrc
Caso queira aprender um pouco mais sobre vimscript, existe o livro Learn Vimscript the Hard Way (em inglês), que pode ser lido pelo site ou comprado em formatos digitais por $8 dolares no Leanpub.
Configurações de outras pessoas
Um erro que muitas pessoas desenvolvedoras cometem ao começar a usar o Vim como editor padrão é baixar as configurações de outra pessoa desenvolvedora. No final de contas você vai acabar com um Vim cheio de plug-ins e configurações que provavelmente nunca vai chegar a usar (isso aconteceu comigo).
Se você realmente quer aprender Vim do básico ao avançado comece criando seu próprio .vimrc e a medida que for sentindo falta de configurações que seu antigo editor possui vá adicionando-as.
No tópico anterior geramos um arquivo .vimrc
utilizando o site VimConfig com configurações básicas, recomendo que você gaste um tempo lendo as configurações que foram geradas e tentando entender oque significam (a maioria possui um comentário em inglês na frente). Vale a pena também ir removendo e vendo quais comportamentos são removidos do editor.
Para que sirva como referência aqui está o meu vimrc :-)
Plug-ins
Uma das coisas que faz com que o Vim seja extensível da maneira que ele é, é através da instalação de plug-ins, que são customizações que adicionam novas funcionalidades ao seu Vim, um exemplo de plug-in famoso é o Nerdtree, que adiciona um file tree para seu Vim:
Figura 4: Nerdtree plug-in instalado e aberto
Gerenciadores de plug-ins
Antes de listarmos alguns plug-ins, precisamos falar de como instala-los. Para isso existem diversos gerenciadores de plug-ins criados por usuários de Vim e que no final levam a mesma função: Instalar plug-ins :P
Abaixo uma lista dos mais conhecidos, fique à vontade para escolher entre eles.
O passo a passo de com adicionar cada um deles está em seu link.
Eu particularmente já utilizo o minpac a um tempo, e o escolhi por ter uma filosofia minimalista e utilizar de recursos do Vim 8.
Com o tempo talvez você comece a sentir falta de features que seu editor de texto padrão possuía e que não encontra no Vim, essa é a hora de dar uma pesquisada no Google por plug-ins. Na maioria dos casos já vai existir algum que supra a sua necessidade e que foi criada por algum usuário.
Plug-ins recomendados
Vou listar alguns dos plug-ins que senti falta quando fiz a migração completa do meu antigo editor de texto Atom, a ideia é que essa lista sirva apenas como referência e que você vá adicionando plug-ins à medida que sentir falta.
- nerdtree - Adiciona um file tree que facilita a navegação pela estrutura dos projetos.
- ctrlp.vim - Buscador de arquivos (basta apertar o botão Ctrl + P e digitar oque está procurando).
- syntastic - Checa por problemas de syntax no código.
- vim-arline - Adiciona uma barra de status com várias informações úteis de sua sessão atual.
- vim-buffergator - Plug-in utilizado para listar, navegar entre e selecionar buffers para edição.
- vim-fugitive - Git wrapper para Vim (adiciona funções do git ao seu Vim).
- identLine - Adiciona linhas verticais para melhor visualização da identação de seu código.
- vim-hardtime - Ajuda a formar bons hábitos de edição com o vim;
Para que sirva de referência, esse é o arquivo onde mantenho todos os plug-ins que estou utilizando no momento.
O site VimAwesome possui uma lista de plug-ins ordenada por quantidade de usuários que o utilizam, vale a pena dar uma conferida.
Conclusão
Com as informações acima você já tem todo o essencial para começar a utilizar alguns dos recursos do Vim, por ser um editor bastante customizavél e dinamico, você sempre aprenderá novos comandos, como automatizar outros e até mesmo conhecer novos plug-ins que forem surgindo. Caso tenha ficado com alguma dúvida não deixe de colocar um comentário abaixo :)
Aprendendo mais (do iniciante ao avançado)
Tutoriais (do básico ao avançado)
- O Vim Golf possuí uma serie de desafios que você pode usar para aprender e praticar Vim.
- vimcasts esse site possui uma lista grande de screencasts curtos que vão te ajudar a aprender algo novo.
- Vim Vídeos by Derek Wyatt - vídeos do básico ao avançado.
- Upcase - possui alguns cursos gratuitos sobre vim.
Recursos extras
-
Artigo do criador do Vim explicando sete hábitos para uma edição efetiva de textos.
-
Threads no CoderWall sobre Vim.
-
Colocar os tutorials em vídeo do básico ao avançado
Referências
https://en.wikipedia.org/wiki/Vim_(text_editor)