Introdução ao editor de textos vi

Em diversas situações é necessário (ou mais prático) editar arquivos de texto diretamente no terminal. Um servidor Linux nem sempre terá um ambiente gráfico instalado. Além disso, é muito comum a administração remota de servidores via linha de comando. Para possibilitar a edição de arquivos em modo texto, uma série de editores foram desenvolvidos, dentre eles (disponíveis no Debian) temos:

  • emacs;
  • vi;
  • jed;
  • joe;
  • nano;
  • etc.

Os dois primeiros exemplos de editores citados possuem grande importância e são considerados editores padrão do UNIX, sendo encontrados em qualquer sistema nele baseado como: Linux, BSDs, Solaris, AIX, IRIX, MacOS X, HP-UX etc. Existem, inclusive, versões para o MS-DOS e Microsoft Windows. Devido à sua grande importância, existe uma rivalidade histórica entre estes editores conhecida como "a guerra dos editores". Atualmente, boa parte das distribuições Linux disponibiliza por padrão apenas o editor vi, ou uma versão melhorada dele, conhecida como vim (vi improved).

O vi possui dois modos de funcionamento, a saber:

  • Modo normal (ou de visualização): Neste modo podemos visualizar o conteúdo do arquivo que está aberto e executar uma série de comandos que controlam o funcionamento do editor;
  • Modo de edição: Neste modo podemos realizar a edição do arquivo.

Para iniciarmos o vi abrindo um arquivo que desejamos editar, basta executar:

aluno@debian:~$ vi <nome-do-arquivo>

O vi será iniciado no modo normal, exibindo o conteúdo do arquivo na tela. Tudo o que for digitado será interpretado como um comando enviado pelo usuário para o editor.

Alternando entre os modos de funcionamento

Para alternarmos do modo normal para o de edição existem uma série de comandos possíveis:

  • i ⇒ Alterna para o modo de edição, com o cursor posicionado antes do caractere atual;
  • a ⇒ Alterna para o modo de edição, com o cursor posicionado após o caractere atual;
  • o ⇒ Alterna para o modo de edição, com o cursor posicionado em uma nova linha abaixo da atual.

Para encerrar a edição do arquivo e voltar ao modo normal basta pressionar a tecla <Esc>.

Apagando caracteres, palavras e linhas

  • x ⇒ Exclui o caractere sobre o cursor;
  • nx ⇒ Exclui n caracteres, a partir do cursor;
  • dw ⇒ Exclui o restante de uma palavra, a partir do cursor;
  • ndw ⇒ Exclui n palavras, a partir do cursor;
  • dd ⇒ Exclui a linha atual;
  • ndd ⇒ Exclui n linhas, a partir da atual.

Caso apaguemos algo por engano, podemos desfazer os últimos comandos com:

  • u ⇒ Desfaz o último comando;
  • nu ⇒ Desfaz os n últimos comandos.

Movendo-se dentro de um arquivo

  • nG ⇒ Vai para a linha n do arquivo. Apenas G vai para o final do mesmo;
  • n+ ⇒ Avança n linhas;
  • n- ⇒ Retrocede n linhas.

Buscando um texto no interior de um arquivo

  • /palavra ⇒ procura por palavra no arquivo;
  • n ⇒ Mostra a próxima ocorrência;
  • N ⇒ Mostra a ocorrência anterior;
  • ?palavra ⇒ procura por palavra no arquivo, no sentido inverso.

Substituindo um texto no interior de um arquivo

  • :%s/palavra/nova/ ⇒ Procura por palavra e substitui por nova da posição atual até o final do arquivo;
  • :%s/palavra/nova/g ⇒ Procura por palavra e substitui por nova em todo o arquivo;
  • :%s/palavra/nova/gc ⇒ Procura por palavra e substitui por nova em todo o arquivo, solicitando confirmação.

Copiando e colando

  • yy ⇒ Copia uma linha atual do texto;
  • nyy ⇒ Copia n linhas a partir da atual;
  • p ⇒ Cola, após a linha atual, o último texto copiado.

OBS: Os comandos x, dw e dd na verdade recortam um texto, o mesmo também pode ser colado com p.

  • v ⇒ Seleciona com as setas (→ ou ←) um conjunto de caracteres;
  • V ⇒ Seleciona com as setas (↓ ou ↑) um conjunto de linhas;
  • <Ctrl>V ⇒ Seleciona com as setas (↓, →, ←, ↑) um bloco.

OBS: Nas três situações, o texto selecionado pode ser copiado com y, recortado com d ou colado com p.

Comandos gerais

Os comandos gerais são relacionados ao funcionamento do editor, e não a edição do texto. Dentre os inúmeros existentes vale destacar:

  • :w ⇒ Salva o arquivo;
  • :w teste.c ⇒ Salva o arquivo com o nome teste.c;
  • :q ⇒ Sai do vi;
  • :q! ⇒ Sai do vi sem salvar o arquivo;
  • :r fulano.txt ⇒ Insere o conteúdo do arquivo fulano.txt no que está sendo editado;
  • :syntax on ⇒ Reconhece a sintaxe do arquivo;
  • :set number ⇒ Mostra o número das linhas;
  • :set ai ⇒ Habilita o autoindent.
ensino/semestres/2012.1/mcs/material/editor_de_textos_vi.txt · Última modificação: 2012/05/24 10:07 (edição externa)