[spacer]


  1. Um pouquinho de história
  2. Um pouquinho sobre a interface do vi
  3. Escolhendo um editor
  4. Lição - Entrando em um arquivo
  5. Lição - Saindo do vim
  6. Lição - Pedindo ajuda
  7. Lição - Repetindo comandos
  8. Lição - Apagando caracteres, palavras e linhas
  9. Lição - Desfazendo e refazendo alterações
  10. Lição - Alterando caracteres
  11. Lição - Copiando/Recortando e colando
  12. Lição - Áreas de armazenamento temporário
  13. Lição - O comando put
  14. Lição - O comando change
  15. Lição - Mostrando informações sobre o arquivo
  16. Lição - Procurando textos no arquivo
  17. Lição - Busca múltipla
  18. Lição - encontrando ), ] e } correspondente
  19. Lição - Navegando no documento
  20. Lição - Trocando palavras
  21. Lição - Executando comandos externos ao editor
  22. Lição - Salvando arquivos
  23. Lição - Inserindo arquivos
  24. Lição - Modo visual
  25. Lição - Vendo diferenças
  26. Lição - Configurando opções
  27. Lição - Editando vários arquivos ao mesmo tempo
  28. Lição - Substituindo textos
  29. Lição - Edição automática
  30. Lição - Trabalhando com arquivos encriptados
  31. Lição - Configurando o vim para trabalhar por você
  32. Programação
  33. Lição - Usando ctags


1. Um pouquinho de história

O vim é o sucessor mais difundido do vi, que é filho do ex com o ed, que por sua vez são filhos do qed, e por aí vai. O vi é a sigla de Visual Interface. Note que naquela época (início dos anos 80), não era comum como hoje, você ter um editor de textos visual, ou seja, você ver na tela o texto que está sendo editado. Tente imaginar como é editar um texto sem vê-lo. Quer tentar? Experimente o editor ed, presente em qualquer distribuição Linux.

Muito mais tarde, em 1992, apareceu no mundo Unix um concorrente do vi, o vim (de "Vi IMitator", o imitador do vi) e logo se tornou popular, pois além de ser um clone muito bem feito do vi, possuía muitas outras funcionalidades, como uso da tecla <TAB> para completar nomes de arquivos, vários níveis de "undo" (desfazer comando), reconhecimento de sintaxe e histórico de linha de comando.

Então de "imitator" ele passou a ser chamado de "Vi IMproved", o vi melhorado. O vim se tornou padrão em sistemas Linux.

2. Um pouquinho sobre a interface do vi

O vi tem dois modos de operação:

  • modo de inserção - no qual as letras são letras mesmo.
  • modo de comando - no qual cada letra tem uma função específica.
O modo de inserção é identificado pela mensagem - INSERT - na parte inferior esquerda da tela.

Para entrarmos no modo de inserção basta pressionarmos o comando i.

Para voltarmos para o modo de comando basta pressionarmos a tecla ESC, identificada neste documento como <ESC>.

E Se você entrou no vim e não faz idéia de como sair, basta um ZZ.

3. Escolhendo um editor

Os editores são divididos basicamente em duas variantes: os clones do vi e os clones do emacs.

Todos os editores tem as mesmas características básicas de edição. Portanto não faz tanta diferença qual a sua escolha. Escolha um editor e aprenda bem seus comandos e recursos.

A maioria dos usuários não usa nem 1% da capacidade dos editores.

O intento deste documento é ajudá-lo a transformar o VI de um simples editor para uma poderosa ferramenta.

4. Lição - Entrando em um arquivo

Para visualizar o arquivo em modo somente leitura:

  $ vi -R nome_do_arquivo.txt

Para abrir um arquivo para edição:

  $ vi nome_do_arquivo.txt
Observação: o caracter $ acima simboliza o prompt de comando.

5. Lição - Saindo do vim

Para sair sem salvar:

  :q! <ENTER>

Para sair salvando:

  :wq <ENTER>

Estou desesperado, pois não encontro os dois pontos neste teclado.

  ZZ

6. Lição - Pedindo ajuda

Para chamar o help do vim:

  :help

Para obter ajuda em um tópico específico:

Ajuda específica Prefixo Exemplo
Modo normal nada :help x
Modo visual v_ :help v_u
Modo de inserção i_ :help i_<Esc>
Linha de comando : :help :quit
Edição de linha de comando c_ :help c_<Del
Argumentos - :help -r
Opções ' :help 'textwidth'

A ajuda do vim é construída com hiperlinks (texto destacado entre |barras|). Para navegar através do hiperlink posicione o cursor sobre e e pressione Ctrl-]. Se o mouse estiver habilitado (no modo gráfico ou dentro de um xterm) dê um duplo click com o botão esquerdo na palavra entre |barras|.

Navegação Comando
Seguir hiperlink Ctrl-]
Voltar Ctrl-T

7. Lição - Repetindo comandos

Sintaxe: número comando objeto

8. Lição - Apagando caracteres, palavras e linhas

Para apagar 10 caracteres a partir do cursor:

  10x

Para apagar 4 palavras a partir do cursor:

  4dw

Para apagar a linha atual

  dd

Para apagar 7 linhas a partir do cursor:

  7dd

Para apagar do cursor ao fim da linha:

  d$

Para apagar do cursor ao inicio da linha:

  d^

Nota se o teclado estiver configurado para aceitar deadkeys você precisará acrescentar um espaço ao final do comando:

  d^<ESPAÇO>

9. Lição - Desfazendo e refazendo alterações

Para desfazer última ação:

  u

Para reconstruir a linha inteira:

  U

Para refazer uma ação desfeita:

  <CTRL>+r

10. Lição - Alterando caracteres

Para alterar somente um caracter posicione o cursor sobre este e pressione r seguido do novo caracter.

Para alterar um grupo de caracteres posicione o cursor sobre o primeiro destes e pressione R seguido dos novos caracteres.

11. Lição - Copiando/Recortando e colando

Para copiar a linha atual:

  yy

Para copiar as próximas 5 linhas:

  5yy

12. Lição - Áreas de armazenamento temporário

O vim tem 36 áreas de armazenamento temporário (abc...z012...89). Para acessar cada uma desta áreas utilize o comando " seguido da letra que representará o armazenamento.

Para cortar a linha atual para a área de armazenamento 8:

  "8dd

Para colar o conteúdo da área de armazenamento r:

  "rp

13. Lição - O comando put

Para colar o conteúdo do buffer na próxima linha use o comando p

14. Lição - O comando change

Para corrigir uma palavra use o comando cw. Este comando não só apaga a parte da palavra a direita do cursor, mas também já muda para o modo de inserção. O comando cw mantém o espaço à direita da palavra removida. Este comando é equivalente a um dwi.

Para apagar até o fim da palavra e entrar no modo de inserção:

  cw

Para apagar até o fim da linha e entrar no modo de inserção:

  c$

Para apagar até o começo da linha e entrar no modo de inserção:

  c^

15. Lição - Mostrando informações sobre o arquivo

Para exibir informações sobre o arquivo atual:

  <CTRL>+g

"NomeDoArquivo.txt" | Modificado | número de linhas | posição relativa

16. Lição - Procurando textos no arquivo

Para procurar a palavra futuro do cursor para a frente:

  /futuro

Para procura a palavra passado do cursor para trás:

  ?passado

Repetindo a última procura para frente:

  n

Repetindo a última procura para trás:

  <SHIFT>+n

Para ir até a primeira ocorrência da palavra teste a partir do cursor:

  /teste

Para ir três linhas abaixo da próxima palavra teste:

  /teste/+3

17. Lição - Busca múltipla

Para localizar a palavra primeira e logo depois desta localizar a palavra segunda:

  /primeira/;segunda

Para realizar uma busca, ao mesmo tempo, unix, linux e aix:

  /unix\|linux\|aix

18. Lição - encontrando ), ] e } correspondente

Para encontrar o parênteses correspondente digite % sobre um deles e o outro será destacado.

  %

19. Lição - Navegando no documento

Para ir para a linha 123

  123 <SHIFT>+g

Para ir para a última linha

  <SHIFT>+g

20. Lição - Trocando palavras

Para trocar a primeira ocorrência da palavra antiga por nova na linha atual:

  :s/antiga/nova

Para trocar todas as ocorrências da palavra antiga por nova na linha atual:

  :s/antiga/nova/g

Para trocar todas as ocorrências da palavra antiga por nova nas linhas 5 a 18:

  :5,18s/antiga/nova/g

Para trocar todas as ocorrências da palavra antiga por nova no arquivo todo:

  :%s/antiga/nova/g

21. Lição - Executando comandos externos ao editor

Para rodar o comando make sem sair do editor:

  :! make

22. Lição - Salvando arquivos

Para salvar o arquivo atual:

  :w

Para salvar o arquivo atual como novo_arquivo.txt (você continua editando o mesmo arquivo).

  :w novo_arquivo.txt

Para salvar da linha 10 à linha 50 do arquivo atual no arquivo fragmento.txt (você continua editando o mesmo arquivo).

  :10,50 w fragmento.txt

Para salvar o arquivo atual como novo_arquivo.txt e editá-lo

  : w novo_arquivo.txt
  : e novo_arquivo.txt

23. Lição - Inserindo arquivos

Para inserir o conteúdo do arquivo parte1 dentro do arquivo atual:

  :r parte1

24. Lição - Modo visual

Para entrar no modo visual pressione v.

Para entrar no modo bloco visual pressione <CTRL>+v

Sendo um editor de textos feito para funcionar no modo texto, ele tem suas limitações visuais, que não lhe permitem deixar uma palavra em itálico por exemplo. Mas o que pode ser feito, o vim faz.

Para centralizar a linha atual

  :center

ou simplesmente

  :ce

Para centralizar um bloco de linhas

  v   pressionar as setas até selecionar o que se deseja
  :ce

Para selecionar uma linha de cada vez

  <SHIFT>+v

Para selecionar colunas

  <CTRL>+v

25. Lição - Vendo diferenças

  vi -d arquivo1 arquivo2

26. Lição - Configurando opções

Para configura a opção ic (ignore case):

  :set ic
ou
  :set ignorecase

27. Lição - Editando vários arquivos ao mesmo tempo

Todos na mesma tela com divisão na horizontal

  vim -o arq1 arq2 arq3

Todos na mesma tela com divisão na vertical

  vim -O arq1 arq2 arq3

Uma única tela com arquivos sobrepostos

  vim arq1 arq2 arq3

Movimentação entre as janelas

  Ctrl+w h   <-
  Ctrl+w j abaixo
  Ctrl+w k acima
  Ctrl+w l   ->

Será aberta uma janela com o conteúdo do arq1, porém eu posso navegar entre os diversos arquivos da lista, segundo os comandos abaixo:

  :e nome   ; abre outro arquivo
  :ls              ; lista os arquivos abertos
  :bn              ; próximo arquivo
  :bp              ; arquivo anterior
  :b1              ; vai para o primeiro arquivo, ou :b2, :b3,

28. Lição - Substituindo textos

Para substituir a palavra antigo por novo nas linhas 10 a 25:

  :10,25 s/antigo/novo/g

Para substituir antigo por ANTIGO:

  s/antigo/\U&/g

O caracter & é o resultado da busca e \U e \L convertem para maiúsculo e para minúsculo respectivamente.

29. Lição - Edição automática

Crie um arquivo contendo os comando de edição desejados. Por exemplo:

  :%s/José Aparecido/João Aparecido/g
  :%s/Copyright/Copyleft/g
  :wq

Vamos salvar o arquivo acima como trocas.vim. Em seguida vamos usá-lo para editar o arquivo arquivo.txt:

  vi -s trocas.vim arquivo.txt

30. Lição - Trabalhando com arquivos encriptados

Para criar um arquivo encriptado use vi -x segredo.txt. Cuidado para não esquecer a senha ou o arquivo ficará secreto para você também.

31. Lição - Configurando o vim para trabalhar por você

O arquivo de configuração do vim chama-se .vimrc. Vamos editá-lo e acrescentar algumas melhorias.

  vim .vimrc

32. Programação

33. Lição - Usando ctags

Tags são identificadores de posição. Para gerar tags para os arquivos C++ no diretório atual use:

  ctags *.cpp *.hpp

Para seguir uma tag basta posicionar o cursor sobre ela e pressionar <CTRL>+] (como no caso do help).

Para ir para uma tag específica use:

  <Esc>:tag nome_da_tag
Nota: use o <tab> para completar.

Para ir para uma tag que contenha p.e. importar (lembre de usar o <Tab>:

  <Esc>:tag /importar

O comando :tags mostra o cominho percorrido.

Para abrir uma tag em outro painel:

  <Esc>:stag nome_da_tag

Se uma função é definida várias vezes, podemos acessar cada uma através de:

  <Esc>:tnext

 

Dúvidas, sugestões, correções: geraldo-ribeiro@uol.com.br

[written_in_vi] [powered_by_debian] [powered_by_grlinux] [powered_by_txt2tags] [valid-html401] [vcss] [mwcts]