Voltar ao Diminua Blog

Artigo

Dominando o `vi` e `vim`: Edição de Texto Eficiente no Terminal Linux

Um guia prático para dominar um dos editores de texto mais poderosos e ubíquos do Linux, desde o básico até comandos avançados.

Dominando o `vi` e `vim`: Edição de Texto Eficiente no Terminal Linux

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: 10G vai 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.
  • :wq ou ZZ: 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 enable ou :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.