O **VI** é o editor de texto padrão em praticamente todos os sistemas baseados em Unix, incluindo o Linux. Aprender seus comandos básicos é fundamental para qualquer pessoa que trabalhe em um terminal, especialmente em servidores onde interfaces gráficas não estão disponíveis. O **Vim** (*Vi Improved*) é a versão moderna e aprimorada, mas a base de comandos é a mesma.

Exemplo da tela inicial do editor de texto VI/Vim no terminal Linux

## 1. Iniciando o VI e Seus Modos

O VI (e Vim) é famoso por ser um editor **modal**, o que significa que ele opera em diferentes modos, e o que você digita tem funções diferentes dependendo do modo em que está. É crucial entender esses três:

Modo de Comando (Normal Mode)

  • É o modo padrão ao abrir o VI.
  • Neste modo, as teclas digitadas não inserem texto, mas são interpretadas como **comandos** (mover cursor, deletar linhas, copiar, colar, etc.).
  • Para retornar a este modo a partir de qualquer outro: Pressione a tecla ESC.

Modo de Inserção (Insert Mode)

  • Neste modo, o VI se comporta como um editor de texto comum: tudo o que você digita é inserido no arquivo.
  • Para entrar a partir do Modo de Comando: Use comandos como:
    • i: Inserir no local atual do cursor.
    • a: Anexar (inserir) após o cursor.
    • o: Abrir uma nova linha abaixo para inserir.
    • I: Inserir no início da linha.
    • A: Anexar (inserir) no final da linha.

Modo de Última Linha (Command-Line Mode)

  • Usado para comandos mais complexos, como salvar, sair, buscar e substituir.
  • Para entrar a partir do Modo de Comando: Digite : (dois pontos). Isso abrirá uma linha de comando na parte inferior da tela.

## 2. Comandos Essenciais para Abrir, Salvar e Sair

Você sempre deve começar no **Modo de Comando** (pressione ESC).

Abrindo um Arquivo

vi nome_do_arquivo.txt
# Ou a versão aprimorada
vim nome_do_arquivo.txt

Salvando e Saindo (No Modo de Última Linha - Comece com ':')

  • :w: Salva (write) o arquivo, mas não sai.
  • :q: Sai (quit) do VI. Só funciona se nenhuma alteração foi feita.
  • :wq: Salva e Sai. (O mais comum)
  • :x: Também salva e sai (similar a :wq).
  • :q!: Sai sem salvar, ignorando quaisquer alterações. Use com cautela!

## 3. Navegação Rápida (Modo de Comando)

Uma vez no Modo de Comando (ESC), você pode navegar sem as setas, o que é mais rápido para quem usa o teclado:

  • h: Move o cursor para a esquerda (⬅️).
  • j: Move o cursor para baixo (⬇️).
  • k: Move o cursor para cima (⬆️).
  • l: Move o cursor para a direita (➡️).
  • w: Move o cursor para a próxima palavra.
  • b: Move o cursor para o início da palavra anterior.
  • 0 (zero): Vai para o início da linha.
  • $: Vai para o final da linha.
  • gg: Vai para a primeira linha do arquivo.
  • G: Vai para a última linha do arquivo.
  • 5G: Vai para a linha de número 5 (use qualquer número).

## 4. Edição de Texto (Modo de Comando)

Esses comandos no Modo de Comando permitem deletar, copiar e colar texto de forma eficiente:

Deletar e Cortar

  • x: Deleta o caractere sob o cursor.
  • dw: Deleta da posição do cursor até o final da palavra.
  • dd: Deleta a linha inteira (e a copia para a área de transferência - *yank buffer*).
  • 2dd: Deleta as próximas 2 linhas.
  • D: Deleta da posição do cursor até o final da linha.

Copiar e Colar (Yanking and Putting)

  • yy: Copia a linha inteira (*yank*).
  • yw: Copia uma palavra (*yank* word).
  • p: Cola o texto copiado ou cortado após o cursor/linha.
  • P: Cola o texto copiado ou cortado antes do cursor/linha.

Outros Úteis

  • u: Desfaz (undo) a última alteração.
  • Ctrl + r: Refaz (redo) a última alteração desfeita.
  • r: Substitui apenas um caractere.
  • . (ponto): Repete o último comando de edição.

## 5. Busca e Substituição (Modo de Última Linha)

Use o Modo de Última Linha (:) para operações em todo o arquivo:

Busca

/termo_a_buscar
# Pressione 'n' para ir para a próxima ocorrência
# Pressione 'N' para ir para a ocorrência anterior

Substituição (Global)

Para substituir todas as ocorrências de `antigo` por `novo` em todo o arquivo:

:%s/antigo/novo/g
# Onde:
# %: em todo o arquivo
# s: substituição
# g: global (em todas as ocorrências da linha)

Dica TechEnfim: Para facilitar seu aprendizado, comece abrindo um arquivo temporário (vim teste.txt) e pratique salvar (:w), sair (:q) e alternar entre os modos ESC, i e : até que a troca seja automática!