No universo do Linux, a linha de comando é frequentemente o palco principal para gerenciamento de sistemas, desenvolvimento e automação. Dentro desse ambiente, a edição de arquivos de texto é uma tarefa onipresente. Embora existam diversas ferramentas gráficas, a capacidade de editar arquivos diretamente no terminal de forma eficiente é uma habilidade inestimável para qualquer profissional de TI. Entre os editores de texto mais icônicos e poderosos para o terminal, destacam-se o `vi` e seu sucessor aprimorado, o `vim` (Vi IMproved).
Este artigo visa desmistificar o `vi`/`vim`, apresentando seus conceitos fundamentais, comandos essenciais e truques que o transformarão de um obstáculo intimidante em uma ferramenta de produtividade poderosa. Seja você um iniciante absoluto ou alguém que já teve contato com o `vi`/`vim` e se sentiu perdido, este guia prático o conduzirá por um caminho de aprendizado sólido.
Por que usar `vi`/`vim`?
Antes de mergulharmos nos comandos, é crucial entender por que o `vi`/`vim` mantém sua relevância:
- Ubiquidade: O `vi` está presente na vasta maioria das distribuições Linux e sistemas Unix-like por padrão. O `vim` é facilmente instalável e muitas vezes é o editor padrão ou uma opção preferencial.
- Leveza e Performance: Editores de terminal consomem significativamente menos recursos do que editores gráficos, sendo ideais para servidores remotos com conexões lentas ou máquinas com recursos limitados.
- Eficiência: Uma vez dominados, os comandos do `vi`/`vim` permitem edição de texto extremamente rápida e precisa, sem a necessidade de tirar as mãos do teclado.
- Modos de Operação: A arquitetura de modos do `vi`/`vim` (Normal, Inserção, Visual, Comando) é o que o torna tão poderoso e, inicialmente, confuso. Ela separa a navegação e manipulação de texto da entrada de texto propriamente dita.
Os Modos Fundamentais do `vi`/`vim`
A primeira e mais importante lição ao aprender `vi`/`vim` é entender seus modos de operação. A maioria dos iniciantes se frustra por não conseguir digitar ou sair do editor. Isso ocorre por estarem no modo errado.
Modo Normal (ou Comando)
Este é o modo padrão ao abrir um arquivo com `vi` ou `vim`. Neste modo, as teclas não inserem texto; em vez disso, elas executam comandos. É aqui que você navega pelo arquivo, copia, cola, deleta e executa outras manipulações de texto. Para retornar a este modo de qualquer outro, pressione a tecla Esc.
Modo de Inserção
Neste modo, o `vi`/`vim` se comporta como um editor de texto comum: as teclas que você pressiona inserem caracteres no arquivo. Existem várias maneiras de entrar no Modo de Inserção:
i: Insere texto *antes* do cursor.a: Insere texto *após* o cursor.I: Insere texto no *início* da linha atual.A: Insere texto no *fim* da linha atual.o: Abre uma nova linha *abaixo* da linha atual e entra no modo de inserção.O: Abre uma nova linha *acima* da linha atual e entra no modo de inserção.
Lembre-se: para sair do Modo de Inserção e voltar ao Modo Normal, pressione Esc.
Modo de Comando (ou Linha de Comando)
Este modo é acessado no Modo Normal pressionando a tecla : (dois pontos). Ele permite executar comandos mais complexos, como salvar o arquivo, sair do editor, buscar e substituir texto, entre outros. Os comandos neste modo são digitados após os dois pontos e finalizados com Enter.
Comandos Essenciais de Navegação e Edição (Modo Normal)
Uma vez que você entende os modos, pode começar a explorar os comandos que tornam o `vi`/`vim` tão eficiente. Todos estes comandos são executados no Modo Normal (pressionando Esc para garantir que você está nele).
Navegação
h: Move o cursor um caractere para a esquerda.j: Move o cursor uma linha para baixo.k: Move o cursor uma linha para cima.l: Move o cursor um caractere para a direita.w: Move para o início da próxima palavra.b: Move para o início da palavra anterior.0(zero): Move para o início da linha atual.^: Move para o primeiro caractere não-branco da linha atual.$: Move para o fim da linha atual.gg: Move para o início do arquivo.G: Move para o fim do arquivo.[número]G: Move para a linha especificada pelo número (ex:10Gvai para a linha 10).
Edição Básica
x: Deleta o caractere sob o cursor.dw: Deleta da posição atual do cursor até o início da próxima palavra.db: Deleta da posição atual do cursor até o início da palavra anterior.d$: Deleta do cursor até o fim da linha.dd: Deleta a linha inteira.yy: Copia (yank) a linha inteira.p: Cola o texto copiado ou deletado após o cursor (ou linha).P: Cola o texto copiado ou deletado antes do cursor (ou linha).u: Desfaz a última alteração.Ctrl + r: Refaz a última alteração desfeita.
Comandos do Modo de Comando
Para salvar, sair e realizar operações mais complexas, utilizamos o Modo de Comando (pressionando : no Modo Normal).
:w: Salva o arquivo (write).:w [nome_arquivo]: Salva o arquivo com um novo nome.:q: Sai do editor (quit). Só funciona se o arquivo não foi modificado ou se as modificações foram salvas.:wqouZZ: Salva e sai.:q!: Sai do editor sem salvar as alterações (força a saída).:/[texto]: Busca a próxima ocorrência de `[texto]` no arquivo.:?[texto]: Busca a ocorrência anterior de `[texto]` no arquivo.:n: Move para o próximo arquivo aberto (útil ao abrir múltiplos arquivos).:N: Move para o arquivo anterior aberto.:%s/[texto_antigo]/[texto_novo]/g: Substitui todas as ocorrências de `[texto_antigo]` por `[texto_novo]` no arquivo inteiro. O `g` (global) garante que todas as ocorrências na linha sejam substituídas, não apenas a primeira.:set number: Mostra os números das linhas.:set nonumber: Esconde os números das linhas.:syntax enableou:syntax on: Ativa o realce de sintaxe (no `vim`).
Dicas Avançadas e Truques
Dominar o `vi`/`vim` vai além dos comandos básicos. Aqui estão algumas dicas que aumentam significativamente sua produtividade:
Repetição de Comandos
Muitos comandos podem ser repetidos. Por exemplo, para deletar 5 linhas abaixo do cursor, você pode usar 5dd. Para mover 10 palavras para frente, use 10w.
Operadores e Movimentos Combinados
O `vi`/`vim` utiliza um conceito de
Foto de Bibek ghosh no Pexels.