Last Updated:
Uma captura de tela mostrando o editor de texto VIM com o plugin NERDTree ligado e três painéis abertos
Uma captura de tela mostrando o editor de texto VIM com o plugin NERDTree ligado e três painéis abertos

Comandos e atalhos do editor VIM para iniciantes

Nawarian
Nawarian vim

O meu foco aqui é te mostrar que VIM pode te trazer muita produtividade no desenvolvimento de software. Aqui tem um vídeo meu sobre como utilizar FFI em PHP, onde eu programo tudo utilizando VIM. Nele você pode reparar que a ferramenta me serviu muito bem para prototipar o programa e que é possível mover relativamente rápido entre um arquivo e outro.

Mais tarde eu acabei migrando para o PhpStorm naturalmente, porque é a minha ferramenta de preferência para desenvolver com PHP.

Conteúdo do post

O que é VIM?

VIM é um editor de texto livre, grátis, simples, leve e robusto.

É comum utilizar VIM dentro de um terminal ou emulador de terminal, mas também é possível usar a aplicação gráfica do VIM chamada gVIM.

Você encontra os pacotes para download do VIM no site oficial. Mas normalmente gerenciadores de pacotes como apt, apkHomeBrew possuem uma forma simples e rápida de instalar em seu sistema.

Um arquivo novo chamado "arquivo.txt" aberto com o editor de textos VIM. O símbolo "~" significa ausência de conteúdo, não é uma linha vazia.
Um arquivo novo chamado "arquivo.txt" aberto com o editor de textos VIM. O símbolo "~" significa ausência de conteúdo, não é uma linha vazia.

Pra quê aprender a utilizar vim?

Antes de qualquer coisa, vamos deixar claro: você não precisa saber utilizar VIM para ter reconhecimento na área de desenvolvimento de software! Eu conheço inúmeros profissionais incríveis que não têm familiaridade alguma com esta ferramenta.

Eu não quero que ao terminar de ler este texto você pense que PRECISA saber utilizar o VIM para ter reconhecimento na profissão, ou que é inferior por não saber. Não é este o ponto!

VIM tem a capacidade de aumentar muito a sua produtividade para resolver os mais diversos problemas do dia a dia tanto na profissão de desenvolvimento de software quanto como usuários.

Abaixo eu descrevo alguns motivos pelos quais eu encorajo todo profissional de desenvolvimento a obter pelo menos o mínimo de proficiência com VIM.

Abrir arquivos grandes sem travar o computador

VIM é altamente otimizado e não precisa indexar todo o conteúdo do seu projeto para operar. É um editor de texto simples e portátil que te permite abrir e operar em arquivos de vários megabytes sem muita dificuldade ou lentidão.

Quando se precisa navegar ou entender qual o tipo de conteúdo existe em determinado projeto, o VIM com certeza é uma opção rápida e que não requer segundos/minutos só para abrir uma pasta.

Há situações em que não é possível utilizar uma IDE

Em determinados momentos você vai se encontrar modificando ou depurando uma aplicação dentro de um conteiner Docker, fazendo ssh num servidor remoto ou mesmo rodando seu sistema *nix sem um servidor gráfico como o X11.

Nestes casos VIM é uma ferramenta incrível porque consegue te dar todo o poder de um editor de texto mesmo sem o suporte gráfico que normalmente teríamos num computador pessoal.

VIM está preparado para trabalhar com quase todas linguagens de programação

Hoje em dia temos IDEs ultra especializadas dominando o mercado, como as ferramentas da JetBrains que são incríveis mas focadas em poucas linguagens cada uma.

Para aprender uma linguagem nova ou experimentar rapidamente alterar o conteúdo de um programa de código aberto numa linguagem com a qual não se está familiarizado, VIM é extremamente útil.

Sempre que eu trabalho com Python, por exemplo, utilizo VIM. Não utilizo uma IDE especializada como o PyCharm porque python não é a minha ferramenta de trabalho e não me preocupei em comprar uma licença desta IDE.

Até hoje eu não consegui encontrar uma IDE gratuita especializada em linguagem C que me satisfizesse melhor do que o VIM.

Alterar rapidamente um código e ver os resultados é extremamente satisfatório com VIM, é um processo pouquíssimo burocrático.

Você pode adicionar funcionalidades ao VIM com a linguagem que quiser

Pouco da customização do VIM é específico deste editor: você não vai precisar escrever arquivos YAML ou JSON que pouco entende, nem navegar em diversos menus de configuração.

Adicionar uma funcionalidade ao VIM pode ser feito através de plugins (específicos do editor) ou linha de comando. O que você consegue executar numa linha de comando, pode ser inserido no seu workflow VIM.

Portanto scripts em C, PHP, Python, Java, LUA ou o que mais você desejar podem ser facilmente integrados ao seu ambiente de desenvolvimento com VIM.

Filosofia VIM

VIM traz consigo dois conceitos importantíssimos. Ao assimilar estes dois conceitos, a maioria dos comandos e atalhos do VIM passam a fazer mais sentido.

Não tire as mãos do teclado

Este é um conceito fundamental que vai te acompanhar durante toda a sua jornada com VIM.

Se você precisar usar o cursor para clicar, rolar a página, ou pressionar as setas para navegar as chances de estar fazendo algo de forma pouco eficiente são altas!

Outro aspecto fundamental é que as suas mão precisam sempre focar no centro do teclado. Se algum movimento ou ação sua te obrigar a mover as mãos para as bordas do teclado ou, pior ainda, segurar o mouse, com certeza há uma forma de otimizar no VIM.

Evite repetições

VIM é um editor de texto de alta produtividade. Todas as repetições podem ser encurtadas com atalhos, programadas e em alguns casos até transformadas em macros.

Por exemplo, o comando dd apaga a linha atual do cursor. Para apagar 5 linhas você pode apertar dd cinco vezes OU pressionar a sequência d5d.

Todas as ações do VIM podem se beneficiar desta repetição. E para coisas mais complexas que envolvam múltiplas ações, é possível criar macros sem precisar programar uma linha de código sequer.

Primeiros passos com VIM

Guarde estes dois conceitos como um mantra pra a sua prática VIM: não tire as mãos do teclado, evite repetições.

Repetir este mantra somado com um tanto de curiosidade, vai te ajudar a dominar o VIM muito mais facilmente.

Abaixo eu vou te contar alguns comandos e ações básicas pra começar a trabalhar com VIM sem sofrer, perder tempo ou se frustrar. Eu garanto que com alguns dias de prática você já vai começar a entender como pode ser produtivo trabalhar com este editor de textos.

Para evitar quaisquer distrações, eu vou rodar todos os exemplos abaixo utilizando uma imagem docker. Rode os comandos abaixo e provavelmente tudo o que eu escrever aqui vai funcionar pra ti sem nenhum problema.

$ docker run --rm -it alpine:latest
/ # apk add vim

O primeiro comando deverá inicializar uma imagem linux (alpine) vazia. A segunda linha, já dentro do conteiner, instala o programa VIM.

Screenshot mostrando o resultado dos comandos acima. O último comando, "vim --version | head -n4", mostra a versão do programa VIM instalado.
Screenshot mostrando o resultado dos comandos acima. O último comando, "vim --version | head -n4", mostra a versão do programa VIM instalado.

Estamos prontos para começar!

Como abrir um arquivo (novo ou existente) com o VIM

É possível abrir um arquivo no VIM quando ele ainda estiver fechado, e quando já está aberto. Também é possível abrir um arquivo já existente ou criar um novo. Vamos ver cada opção aqui.

Não tem diferença nenhuma o processo de abrir um arquivo novo ou existente no VIM. A maior diferença está em iniciar o VIM ou abrir o arquivo com o VIM já aberto.

Para abrir um arquivo com o VIM, basta executar o comando vim no terminal e passar o caminho do arquivo como parâmetro. A sintaxe é essa:

$ vim [arquivo]

Onde [arquivo] deve ser substituído pelo caminho do arquivo (novo ou existente) a ser aberto, sem colchetes. Por exemplo, para abrir um arquivo novo chamado nawarian.txt podemos executar o seguinte comando:

$ vim nawarian.txt

Ao executar o comando acima, uma tela parecida com esta deverá abrir:

Programa VIM com o arquivo "nawarian.txt" aberto. A palavra [New] na barra de status indica que o arquivo não existia antes.
Programa VIM com o arquivo "nawarian.txt" aberto. A palavra [New] na barra de status indica que o arquivo não existia antes.

Como salvar e sair do VIM

Mesmo sem adicionar nada no arquivo, já podemos salvar e sair. Desta forma o arquivo já será criado no sistema operacional normalmente, porém vazio. Pressione :wq e em seguida enter para que VIM salve e feche o arquivo.

Aqui w significa "write", ou "escrever" em português. E q significa "quit", ou "sair" em português. Portanto o comando :wq pode ser lido como "write and quit" ou "escrever e sair".

Ao fechar VIM com :wq o arquivo nawarian.txt foi gravado em disco, mesmo com 0 bytes.
Ao fechar VIM com :wq o arquivo nawarian.txt foi gravado em disco, mesmo com 0 bytes.

Como abrir um arquivo com o VIM já aberto

Vamos abrir novamente o arquivo nawarian.txt com o comando a seguir:

$ vim nawarian.txt

Com isto, VIM abrirá o arquivo nawarian.txt (agora já existente). Vamos agora abrir um arquivo chamado codamos.com.br mas desta vez com o VIM já aberto.

Para isto, utilizamos o comando :o codamos.com.br onde codamos.com.br é o nome do arquivo. :o pode ser lido como "open", ou "abrir" em português. Portanto :o codamos.com.br vai "abrir o arquivo codamos.com.br".

Com o VIM já aberto, digite " :o codmaos.com.br" e em seguida pressione enter.
Com o VIM já aberto, digite " :o codamos.com.br" e em seguida pressione enter.
Ao pressionar enter, um novo arquivo chamado codamos.com.br deverá aparecer em seu buffer no VIM.
Ao pressionar enter, um novo arquivo chamado codamos.com.br deverá aparecer em seu buffer no VIM.

Edição de texto

Nós já conseguimos abrir e fechar um arquivo com VIM. Muito bem!

Mas é importante também alterar o conteúdo deste arquivo, né?

O VIM possui diferentes modos de trabalho. Por padrão, o modo de trabalho do VIM é o "Modo de comandos". Para alterar o conteúdo do arquivo, precisamos ativar o "Modo de inserção".

Basta pressionar a tecla i para ativar o "Modo de inserção". Você pode notar que a barra de status do VIM indica quando estamos no modo de inserção:

Ao pressionar a tecla i VIM entra no modo de inserção e mostra o texto -- INSERT -- na barra de status, indicando que estamos no modo de inserção.
Ao pressionar a tecla VIM entra no modo de inserção e mostra o texto -- INSERT -- na barra de status, indicando que estamos no modo de inserção.

Sempre que o modo de inserção estiver ativado (-- INSERT -- aparece na barra de status), todas as teclas que pressionamos serão escritas no buffer do arquivo.

Agora que estamos no modo de inserção, podemos escrever "Olá mundo!", pressionar ESC para voltar ao modo de comandos e executar o comando de salvar e sair, ou :wq.

O texto "Olá mundo" foi escrito no buffer do vim. Ao pressionar ESC voltamos ao modo de comandos, e iniciamos o comando salvar e sair.
O texto "Olá mundo" foi escrito no buffer do vim. Ao pressionar ESC voltamos ao modo de comandos, e iniciamos o comando salvar e sair.

Note que agora o arquivo codamos.com.br possui 11 bytes. Pois escrevemos o texto Olá mundo nele. Podemos tomar certeza de que modificamos mesmo o arquivo utilizando o comando cat.

$ cat codamos.com.br
O comando ls -la mostra o arquivo codamos.com.br e seus 11 bytes. Enquanto o comando cat codamos.com.br mostra seu conteúdo "Olá mundo".
O comando ls -la mostra o arquivo codamos.com.br e seus 11 bytes. Enquanto o comando cat codamos.com.br mostra seu conteúdo "Olá mundo".

Como navegar no texto

Navegar o conteúdo no VIM também é um pouco diferente do comum. Lembre-se: não tire as mãos do teclado, foco no centro do teclado, evite repetições.

Vamos abrir o arquivo nawarian.txt e escrever mais do que uma linha lá. Digite o comando abaixo:

$ vim nawarian.txt

Agora que o arquivo nawarian.txt está aberto no VIM, e estamos o modo de comando, vamos entrar no modo de inserção pressionando a tecla i.

Agora digite um texto de algumas linhas, aqui vai minha sugestão. Mas digita mesmo, não dê um copia e cola.

VIM é um editor muito massa
mas pouca gente entende o software e passa sufoco.
Se este tutorial conseguir me preparar pra começar a usar VIM com mais frequência
eu prometo que vou compartilhar nas minhas redes sociais para que
mais pessoas sejam infectadas pelo vírus do VIM.

Pronto, agora pressione ESC para voltar ao modo de comandos. Sua tela deve mais ou menos assim:

Buffer do VIM mostrando o texto acima. Note que o cursor está parado no último caractere da última linha.

Como mostrar as linhas do documento

Eu gosto de me guiar pelas linhas do documento. Isto não é obrigatório mas me ajuda muito a navegar no VIM.

Basta executar o comando :set nu (set number) para que o VIM exiba as linhas normalmente. O seu editor deverá ficar assim depois de executar o comando :set nu:

Editor VIM após executar o comando ":set nu" mostra o número de cada linha do arquivo nawarian.txt
Editor VIM após executar o comando ":set nu" mostra o número de cada linha do arquivo nawarian.txt

Mover o cursor para uma linha específica

Se você já sabe com qual linha quer trabalhar, basta usar o atalho número + gg. Se você quiser navegar rapidamente para a linha 2, basta digitar 2gg.

Como eu não estudei este atalho a fundo, eu costumo chamar esta ação de "gogo" 😅

Mover o cursor linha a linha ou coluna a coluna

Caso queira mover o cursor manualmente para cima, baixo, esquerda ou direita há também atalhos específicos.

Eu não recomendo utilizar as setas do teclado, lembre-se: mantenha as mãos ao centro do teclado!

No modo de comandos, basta utilizar as teclas h, j, k e l para navegar para esquerda, baixo, cima e direita respectivamente.

  • h move o cursor para a esquerda
  • j move o cursor para baixo
  • k move o cursor para cima
  • l move o cursor para direita

Eu sei, no começo é difícil. Mas com a prática você vai quer que na verdade isto vai te economizar muito tempo e esforço.

Existe um joguinho de navegador muito bacana que pode te ajudar a ganhar prática com o cursor: VIM Adventures.

Além disso, é possível repetir estes atalhos N vezes de acordo com o número de prefixo que você escolher.

Por exemplo, caso queira andar 4 linhas para cima, você tem duas opções:

  • Pressionar k quatro vezes seguidas; ou
  • Pressionar 4k uma única vez

A segunda opção mantém suas mãos ao centro do teclado e evita repetições.

Mover para o começo ou fim da linha

Para mover rapidamente para o começo da linha, digite ^.

Para mover rapidamente para o fim da linha, digite $.

Pular palavras para frente e para trás

Para avançar o cursor em uma palavra, basta digitar w (word, ou "palavra" em português) uma única vez. Ao digitar 5w você avança 5 palavras.

De forma semelhante, ao digitar b (back, ou "voltar" em português) uma vez o seu cursor irá recuar uma palavra. E ao digitar 5b, você volta 5 palavras.

Buscar conteúdo no VIM

Outra ação comum ao editar um texto é encontrar a ocorrência de determinada palavra ou símbolos.

No VIM o comando :/termo-de-busca irá buscar termo-de-busca no conteúdo do buffer atual.

Voltando ao texto que escrevemos, podemos buscar a palavra VIM, que aparece no texto 3 vezes, com o seguinte comando:

:/VIM
Iniciando uma busca pela palavra VIM usando o comando :/VIM. Três ocorrências deverão ser encontradas no texto.
Iniciando uma busca pela palavra VIM usando o comando :/VIM. Três ocorrências deverão ser encontradas no texto.

Considerando que o cursor estava no fim da última linha, ao buscar VIM o editor deverá retornar ao começo do arquivo e apontar a primeira ocorrência no começo da primeira linha. Note que o editor nos informa que precisou retornar ao início do arquivo:

A busca pela palavra VIM indica que a busca chegou ao fim do arquivo e precisou retornar ao topo. O cursor foi movido para o começo da linha 1, onde a palavra VIM aparece pela primeira vez no documento.
A busca pela palavra VIM indica que a busca chegou ao fim do arquivo e precisou retornar ao topo. O cursor foi movido para o começo da linha 1, onde a palavra VIM aparece pela primeira vez no documento.

Como a palavra VIM aparece mais de uma vez no texto, podemos repetir a operação de busca para encontrar a próxima. Temos duas opções para alcançar este objetivo:

  • Executar o comando de busca :/VIM novamente (repetição); ou
  • Invocar o atalho next, ou "próximo" em português, ao pressionar a tecla n

Assim como os outros atalhos mencionados, o atalho next pode ser prefixado com um número. Portanto 2n irá buscar o último termo de busca (VIM neste caso) duas vezes.

Ainda tem muito chão pela frente

Com estas primeiras dicas você já vai conseguir se virar bem no seu aprendizado e ganhar proficiência com o editor VIM.

Ainda tem muita coisa pra aprender no VIM que pode tornar sua prática com desenvolvimento de software mais prazeirosa e produtiva. Aqui alguns exemplos de o que se pode fazer com o VIM:

  • Instalar/desenvolver plugins;
  • Gravar e utilizar macros;
  • Abrir e navegar entre múltiplas abas de texto;
  • Dividir a tela para editar dois arquivos ao mesmo tempo;
  • Rodar programas de linha de comando diretamente do VIM;
  • Direcionar o resultado de um comando para o buffer do editor atual;
  • Outras coisas que nem eu sei...

Mas antes de se aventurar com todas essas funcionalidades, é importante atingir algum nível de proficiência com as ferramentas que citei neste texto.

Para quem entende inglês sem muita dificuldades, tem aqui um vídeo interessante sobre com várias dicas para atingir maior proficiência no VIM. Se você não aprender nada a partir deste vídeo, com certeza terá ao menos muita inspiração.

 

Comments