Vim básico: o suficiente para sobreviver em qualquer servidor
1. Por que aprender Vim? O editor que nunca falta
Em qualquer servidor Unix/Linux que você acessar via SSH, o Vim (ou seu predecessor Vi) estará presente. Não importa se o ambiente tem nano, emacs ou qualquer outro editor — o Vim é o padrão universal. Sysadmins e profissionais de DevOps precisam editar arquivos de configuração, logs e scripts rapidamente, sem depender de interface gráfica.
A diferença fundamental entre o Vim e editores comuns está nos modos de operação. Enquanto no Bloco de Notas ou VS Code você digita diretamente, no Vim você alterna entre modos para navegar, editar e comandos. Isso pode parecer estranho no início, mas após algumas horas de prática, a eficiência se torna evidente.
2. Modos essenciais: o coração do Vim
O Vim possui quatro modos principais que você precisa dominar:
Modo Normal — é o modo padrão ao abrir o Vim. Aqui você navega e executa comandos sem inserir texto. As teclas h, j, k, l movem o cursor para esquerda, baixo, cima e direita, respectivamente.
Modo Inserção — para digitar texto. Pressione i para inserir antes do cursor, a para inserir após, o para abrir nova linha abaixo. Versões maiúsculas fazem o oposto: I insere no início da linha, A no final, O abre linha acima.
Modo Visual — para selecionar texto. v seleção caractere a caractere, V linha inteira, Ctrl+v seleção em bloco (útil para editar colunas).
Modo de Comando — acessado com :, permite salvar, sair e executar comandos. Os essenciais:
:w — salvar arquivo
:q — sair
:q! — sair sem salvar (forçado)
:wq — salvar e sair
:x — salvar e sair (equivalente a :wq)
ZZ — salvar e sair (no modo Normal)
3. Movimentação básica: não use as setas
Usar as setas direcionais no Vim é considerado amador. Em servidores remotos com latência, cada movimento com seta gera caracteres de escape que podem atrapalhar. Aprenda a navegar pelo teclado:
Navegação por palavras:
w — próxima palavra
b — palavra anterior
e — final da palavra atual
Navegação por linhas:
0 — início da linha (coluna 1)
^ — primeiro caractere não branco da linha
$ — final da linha
gg — início do arquivo
G — final do arquivo
:N — vai para a linha N (ex.: :42 vai para linha 42)
Rolagem de tela:
Ctrl+d — desce meia tela
Ctrl+u — sobe meia tela
Ctrl+f — avança uma tela inteira
Ctrl+b — retrocede uma tela inteira
Busca rápida:
/palavra — busca para frente
?palavra — busca para trás
n — próxima ocorrência
N — ocorrência anterior
:noh — remove destaque das ocorrências
Exemplo prático: para encontrar todas as ocorrências de "error" em um log e navegar entre elas:
/error
n (várias vezes para percorrer)
:noh (quando terminar, limpa o destaque)
4. Edição de texto: copiar, colar, apagar e desfazer
Exclusão (cortar):
x — apaga caractere sob o cursor
dd — apaga linha inteira
dw — apaga até o final da palavra
d$ — apaga até o final da linha
d0 — apaga até o início da linha
Copiar e colar:
yy — copia linha inteira (yank)
yw — copia palavra
p — cola após o cursor
P — cola antes do cursor
Desfazer e refazer:
u — desfaz última ação
Ctrl+r — refaz (redo)
Substituir caracteres:
r — substitui um caractere (digite r + novo caractere)
R — entra em modo Replace (sobrescreve enquanto digita)
Exemplo prático: substituir uma linha inteira de configuração:
dd — apaga a linha
i — entra em modo inserção
<digite a nova linha>
Esc — volta ao modo Normal
5. Salvando, saindo e gerenciando arquivos
As combinações mais comuns para salvar e sair:
:w — salva sem sair
:q — sai (se não houver alterações)
:wq — salva e sai
:x — salva e sai (mais rápido que :wq)
ZZ — salva e sai (no modo Normal, sem dois-pontos)
Forçando comandos (quando o arquivo é somente leitura ou você não tem permissão):
:q! — sai sem salvar (descarta alterações)
:w! — força a escrita (se tiver permissão)
:wq! — força escrita e saída
Abrindo múltiplos arquivos:
:e arquivo.txt — abre outro arquivo no mesmo Vim
:n — próximo arquivo da lista
:prev — arquivo anterior
Dica de sobrevivência: ao fazer git commit, se o Vim abrir e você quiser cancelar, use :cq (sair com código de erro). O Git interpretará como falha e não criará o commit.
6. Truques úteis para o dia a dia no servidor
Inserir resultado de comandos:
:r !date — insere a data atual no arquivo
:r !ls -la — insere listagem de diretório
:r !grep erro /var/log/syslog — insere resultados de busca
Substituição global:
:%s/antigo/novo/g — substitui todas as ocorrências
:%s/antigo/novo/gc — com confirmação (c = confirm)
Numeração de linhas:
:set number — ativa numeração
:set nonumber — desativa
:set nu! — alterna (toggle)
Recuar blocos:
>> — recua linha para direita
<< — recua linha para esquerda
== — auto-indenta linha (útil para scripts)
Macro simples: grave uma sequência de comandos e repita:
q — começa a gravar
a — nome da macro (pode ser qualquer letra)
<comandos> — execute os comandos desejados
q — para a gravação
@a — executa a macro uma vez
@@ — repete a última macro
Exemplo: adicionar "sudo" no início de 5 linhas:
qaI sudo Esc j q
4@a
7. Saindo de emergência: quando tudo parece perdido
O meme "como sair do Vim" é famoso por um motivo. Aqui estão as soluções para cada situação:
Se você está perdido no modo Inserção: pressione Esc (ou Ctrl+[ que é equivalente).
Se o teclado travou: Ctrl+c interrompe a operação atual e volta ao modo Normal.
Se você quer um shell temporário:
:shell — abre um shell dentro do Vim
exit — volta ao Vim
Se nada funciona — suspenda o processo:
Ctrl+z — suspende o Vim (volta ao shell)
kill %1 — mata o processo suspenso
fg — traz o Vim de volta (se você mudou de ideia)
Comando de último recurso: se você alterou tudo e quer sair sem salvar:
:q! — sai descartando todas as alterações
Referências
- Documentação oficial do Vim — Manual completo, FAQ e tutoriais oficiais do projeto Vim.
- Vim Adventures — Jogo interativo para aprender navegação e comandos básicos do Vim de forma divertida.
- Open Vim Tutorial — Tutorial interativo online com exercícios práticos para iniciantes.
- Vim Cheat Sheet (devhints) — Folha de consulta rápida com os principais comandos organizados por categoria.
- Vi vs Vim: Qual a diferença? (Linux Handbook) — Explicação clara sobre as diferenças entre Vi e Vim, essencial para entender o ambiente de servidores.
- Vim Tips Wiki — Coletânea de dicas práticas da comunidade, incluindo truques para edição de configurações e scripts.