Um guia para você se virar no Vim

Um guia para você se virar no Vim

Se você já abriu um arquivo no terminal, caiu dentro do Vim sem querer e sentiu que tinha sido condenado à prisão perpétua, respira: dá pra sair, dá pra salvar, dá pra editar e, com um pouco de treino, dá até pra gostar.

Este artigo é um guia completo para você usar o Vim mesmo sem saber nada de Linux nem de terminal. A ideia é simples: tirar o clima de terror, explicar o que realmente causa confusão e te dar um conjunto de comandos que já resolvem 90% dos casos do dia a dia.

Vim não é difícil – ele é diferente

Por muitos, o terminal no Linux ainda é visto como um “bicho-papão”, e o Vim virou praticamente o mascote dessa fama. Mas a verdade é que o Vim não é intuitivo como um editor gráfico comum, ele não foi feito pra você abrir e sair digitando e justamente por isso ele é tão poderoso.

O Vim é um dos editores de texto mais flexíveis do mundo em linha de comando. Ele:

  • É multiplataforma (Linux, BSD, macOS, Windows);
  • Suporta escrita da direita para a esquerda;
  • Tem tradução para dezenas de idiomas;
  • Entende vários formatos de arquivo;
  • Traz realce de sintaxe, macros, scripts, integração com comandos do sistema;
  • Consegue até abrir arquivos comprimidos;
  • E, acredite, tem até uma interface gráfica, o gVim.

Antes de ir para os comandos, vale entender de onde ele veio.

Do vi ao Vim (e ao NeoVim)

Tudo começa com o vi, lá nos anos 70, como editor padrão em sistemas Unix. Ele era simples, rápido e eficiente. Até hoje, praticamente toda distro Linux traz o vi (ou uma variante dele) pré-instalado.

Nos anos 90 surge o VimVi IMproved (vi melhorado). A ideia foi pegar o conceito do vi e turbinar com mais atalhos, mais recursos, mais extensibilidade e mais conforto para programadores e administradores de sistema.

Mais recentemente, entrou em cena o NeoVim, um “fork” moderno do Vim, focado em suporte nativo a plugins avançados, integração com linguagens modernas (LSP, etc.) e uma arquitetura mais modular.

Pra aprender o básico, tudo o que você ver aqui sobre Vim serve como base também para o NeoVim.

O verdadeiro “segredo” do Vim: modos de operação

É aqui que muita gente tropeça: o Vim não é um editor de texto “normal”. Ele funciona em modos.

Quando você abre o Vim, vê o arquivo ocupando quase toda a tela e, lá embaixo, uma linha de status com o nome do arquivo. Se tentar sair digitando, as coisas parecem erradas: letras não aparecem, partes do texto somem, comandos estranhos acontecem.

Isso não é bug; é design.

Modo Normal (ou de Comando)

Assim que você abre o Vim, você está no Modo Normal. Nesse modo, as teclas não escrevem texto, elas enviam comandos: mover o cursor, apagar, copiar, colar, etc. É como se o teclado inteiro virasse um enorme painel de atalhos.

Um guia para você se virar no Vim (3)

Você sabe que está no Modo Normal quando a linha de status só mostra o nome do arquivo ou coisas como 1,1 All, sem mensagens como — INSERT –.

No Modo Normal, você pode se mover com as setas do teclado ou usando:

  • h → esquerda
  • l → direita
  • j → desce uma linha
  • k → sobe uma linha

Isso foi pensado para você não precisar tirar as mãos da linha principal do teclado.

Modo de Inserção (edição de texto)

O que a maioria das pessoas espera de um editor é o que o Vim chama de Modo de Inserção: você digita, o texto aparece. Para entrar no Modo de Inserção, no Vim, você aperta i.

Ao fazer isso, deve aparecer -- INSERT -- (ou — INSERIR –) na parte de baixo da tela. Esse é o sinal de que agora você está escrevendo conteúdo. Para parar de escrever e voltar ao Modo Normal, você aperta Esc.Se você guardar só isso, já evita 90% do terror. Quer escrever? Aperta i. Terminou de digitar? Aperta Esc.

Um guia para você se virar no Vim (2)

Linha de comandos do Vim: onde moram os “superpoderes”

Além dos modos Normal e Inserção, o Vim tem um “mini terminal” próprio: a linha de comandos. Para entrar nele, você precisa estar no Modo Normal e apertar Shift + :.

Vai aparecer : lá embaixo e um cursor piscando. A partir daí, você digita um comando (temos alguns exemplos mais adiante) e confirma com Enter.Se se arrepender no meio do caminho, é só apertar Esc para cancelar e voltar ao Modo Normal.

Um guia para você se virar no Vim (1)

Navegação e edição básica: copiar, colar, apagar, desfazer

Agora que você já sabe alternar entre os diferentes modos, vamos aos comandos que realmente fazem o Vim ser útil. Entre no modo normal e teste os comando a seguir:

Copiar e colar

No Vim, copiar é chamado de yank e colar é put.

  • Copiar uma linha inteira: yy
  • Colar logo abaixo da linha atual: p

Apagar texto

  • Apagar o caractere sob o cursor: x
  • Apagar uma palavra a partir do cursor: dw
  • Apagar uma linha inteira: dd

Desfazer alterações

O equivalente do “Ctrl+Z” é: u

Por padrão, o Vim guarda um histórico bem generoso de alterações (por volta de 1000 passos), o que te dá bastante margem pra errar à vontade.

Navegação

Alguns atalhos de movimentação que aceleram o trabalho:

  • Ir para o início da linha atual: 0
  • Ir para o final da linha atual: $
  • Ir para a primeira linha do arquivo: gg
  • Ir para a última linha: Shift+g

Se você trabalha com arquivos grandes, ver os números das linhas ajuda muito. Você pode ativar isso com :set nu E desativar com :set nonu.

Salvar o arquivo e sair do Vim

Chegamos à parte que mais rende memes. Tudo isso é feito pela linha de comandos (Shift + : no Modo Normal).

  • Para salvar o arquivo atual, o comando é :w
  • Enquanto para salvar como (criar outro arquivo com o conteúdo atual), use o comando :w novo_arquivo.txt
  • Se você quer salvar e sair, o comando é :wq
  • Para sair sem salvar (jogando fora as mudanças), use o comando :q!

Se você decorar só :wq e :q!, já se livra daquele medo de “e se eu ficar preso aqui pra sempre?”.

Busca e substituição

No Modo Normal, para procurar uma palavra no arquivo, use /palavra, aperte Enter e o Vim vai levar o cursor até a primeira ocorrência encontrada.  Para ir para a próxima ocorrência, basta apertar n.

Substituir numa linha

Na linha de comandos, para substituir uma palavra na linha atual, use :s/antigo/novo. Isso altera apenas a primeira ocorrência nessa linha. Se quiser substituir todas as ocorrências da linha, pode acrescentar g no final :s/antigo/novo/g.

Substituir no arquivo inteiro

Para substituir uma palavra em todo o arquivo, use :%s/antigo/novo/g.

  • % significa “todas as linhas”.
  • g significa “global” (todas as ocorrências por linha).

Substituir em um intervalo de linhas

Se você quiser alterar apenas entre duas linhas específicas (por exemplo, da 10 até a 30) :10,30s/antigo/novo/g

  • 10,30 define o intervalo de linhas;
  • s é de “substitute”;
  • g continua significando “todas as ocorrências” dentro de cada linha.

Isso dá uma ideia de como o Vim trata texto de forma precisa.

Regex, correção ortográfica e .vimrc: superpoderes do Vim

O Vim entende nativamente expressões regulares (regex). Isso quer dizer que você não precisa procurar apenas palavras exatas: pode procurar padrões, como:

  • endereços de e-mail;
  • datas;
  • números de telefone;
  • linhas que começam com certa palavra, etc.

É um assunto mais avançado, mas é bom saber que está lá, principalmente se você trabalha muito com logs, código ou grandes volumes de texto.

Correção ortográfica em português

Sim, o Vim também faz correção ortográfica. No Modo Normal, abra a linha de comandos e digite:

:set spell

:set spelllang=pt_br

O Vim vai baixar o dicionário (se necessário) e começar a marcar palavras suspeitas.

  • Para ver sugestões de correção para a palavra sob o cursor, o comando é z=
  • Para marcar uma palavra como correta (adicioná-la ao dicionário pessoal), use zg
  • Para ignorar uma palavra errada, é zw

Se quiser que a correção ortográfica fique sempre ativada, você pode colocar essas configurações no arquivo .vimrc, que fica no seu diretório HOME:

set spell

set spelllang=pt_br

O .vimrc é o lugar onde você configura preferências, define atalhos personalizados, cria macros e muda cores, comportamento de recuo, etc.

Aprendendo Vim “brincando”

Você não precisa decorar tudo na marra. Existem formas bem mais divertidas de aprender:

  • Vim Adventures – um jogo em que você aprende os comandos do Vim enquanto explora um mundo estilo RPG;
  • Learn Vim (iggredible) – um guia muito bem organizado no GitHub, com passo a passo para sair do zero e realmente ficar produtivo;
  • Outros sites interativos como o vim.is, e os próprios tutoriais oficiais do Vim (vimtutor no terminal) ajudam a fixar os conceitos. Se você digitar no terminal vimtutor vai abrir um tutorial interativo em português (em muitas distros), direto no próprio Vim.

E se eu quiser menus, janelas e mouse?

Se você curtir a filosofia do Vim, mas ainda sentir falta de uma interface gráfica, existe o gVim: é o Vim com janela, menus, botões e integração melhor com o ambiente gráfico, mas com o mesmo cérebro por trás.

É só procurar por gvim ou vim-gtk nos repositórios da sua distro e instalar.

Perca o medo e ganhe um aliado

O Vim assusta porque quebra a expectativa que a gente tem de um editor de texto: ele não começa no “modo de digitação”, ele exige que você entenda a ideia de modos, e isso é diferente do que a maioria das pessoas está acostumada.

Por outro lado, é justamente isso que faz dele um aliado poderoso:

  • Você edita texto sem tirar as mãos do teclado;
  • Navega com precisão;
  • Automatiza padrões de edição;
  • Ganha velocidade com o tempo.

Se você levar só estes pontos:

  • Esc para voltar ao Modo Normal;
  • i para começar a escrever;
  • :w para salvar;
  • :wq para salvar e sair;
  • :q! para sair sem salvar;

…já deixa de ser “refém do Vim” e começa a usá-lo a seu favor.

A partir daí, é só prática, curiosidade e, se quiser, alguns minutinhos por dia no Vim Adventures ou no Learn-Vim para ir “entortando” a curva de aprendizado até ela ficar totalmente ao seu favor.

Aproveite que está aqui e conheça 11 softwares imperdíveis para o terminal selecionados pela comunidade Diolinux!