Introdução ao Vim

Publicado em 24/03/2017

A pergunta que não quer calar: por que diabos usar um editor do tempo do onça como o Vim, quando temos à nossa disposição tantos editores gráficos poderosos e cheios de recursos e plugins tais como Sublime, Atom e VSCode ou muito mais simples de usar, como o Gedit, Leafpad ou Nano?

A principal razão, sem dúvida, é porque o Vim é onipresente em todas as distribuições baseadas em Unix. Imagine-se num sistema completamente estranho para você... neste cenário, ter um editor de texto conhecido ao seu dispor é uma mão na roda, certo?!

Outra vantagem, seria quando estamos numa sessão SSH muito lenta, com alta taxa de latência, pois o Vim é um editor completíssimo, com comandos disparados na maioria das vezes por uma única tecla, ou um par delas.

Na verdade, depois que você se acostumar e decorar os comandos, não vai querer saber de outro editor para usar no terminal. É um verdadeiro vício entre os administradores de sistema!

Vi ou Vim?

Vim é um acrônimo para Vi iMproved, ou seja "Vi melhorado". Como o nome indica, portanto, o Vim apresenta muitos recursos extras em relação ao seu avô, o Vi.

Muitas distribuições, todavia, instalam as duas versões, ou fornecem um link simbólico de vi para vim. No Ubuntu, aliás, o comando vi executa o vim no modo de compatibilidade. O principal problema nesse modo é que as teclas de movimentação (setas), home, pgUp e pgDwn só funcionam no modo de comando.

Se quiser sair do modo de compatibilidade com o vi, basta digitar :set nocp. Para manter essa mudança de forma permanente, crie o arquivo ~/.vimrc, se ainda não existir, e acrescente esta linha:

set nocp

Memorizando comandos

Para quem conhece bem o inglês, fica fácil memorizar os comandos do Vim. Por exemplo: d = delete (apagar), y = yank (arrancar), p = paste (colar), w = write (gravar) e q = quit (sair). É bem intuitivo, exceto talvez para os absolutamente neófitos.

Começando...

O grande nó da questão para os novos usuários é que o Vim opera em modo dual: o modo de comando e o modo de edição (entrada de texto). Quando inicia, Vim entra automaticamente no modo de comando. Vamos então ao básico do básico:

  • Digite i ou pressione a tecla Insert para entrar no modo de edição.
  • Tecle Esc para voltar ao modo de comando.

Para iniciar um arquivo, use:

  • vim abre um documento vazio
  • vim [nome-do-novo-arquivo] abre e nomeia um novo arquivo
  • vim [nome-do-arquivo] abre um arquivo já existente

No modo de edição, você pode navegar pelo documento como faz em qualquer outro editor, usando as teclas de setas. Home vai para o começo do parágrafo e End vai para o fim dele. Ctrl-Home vai para o início do documento e Ctrl-End vai para o final.

O Vim é o rei do teclado

Se você estiver usando um desses teclados compactos que não possuem teclas de movimentação, ou se for bom de digitação e quiser acelerar sua produtividade, entre no modo de comando e use:

  • j move o cursor uma linha para baixo
  • i move o cursor uma linha para cima
  • G vai para o fim do documento
  • gg vai para o começo do documento
  • h move o cursor para a esquerda, um caracter de cada vez
  • l move o cursor para a direita, um caracter de cada vez

Salvando as mudanças e saindo do Vim

Certifique-se de entrar no modo de comando teclando Esc, digite :w e Voilá! - verá uma mensagem dizendo algo como: "novo-arquivo" [Novo] 1L, 7C gravado(s)

:sav nome-do-arquivo dá nome a um novo documento ou salva um arquivo com um novo nome.

Para gravar suas alterações e sair do Vim, entre no modo de comando (Esc) e digite :x ou :wq, seguido do Enter.

Estando no modo de comando, e já tendo salvo o documento, :q encerra o Vim. Para forçar a saída sem gravar eventuais alterações, use :q!.

Alguns comandos comuns para edição

  • u comuta entre desfazer e refazer alterações
  • r substitui o caracter sob o cursor
  • x apaga o caracter sob o cursor
  • dw apaga uma única palavra, a partir do cursor
  • D apaga até o final da linha, a partir do cursor
  • dd corta a linha sob o cursor
  • Ndd corta N linhas; p.ex. 2dd elimina duas linhas a partir da linha corrente
  • yy copia a linha corrente
  • p cola tudo o que tiver sido cortado ou copiado
  • :set number mostra o número das linhas
  • :set nonumber desativa a numeração de linhas

Aprofundando no assunto

Use o comando :help para consultar a extensa documentação interna do Vim, que só não estará disponível se a distribuição tiver instalado a versão vim-tiny.

Para um tutorial completo, digite o comando vimtutor no prompt do shell. Vai levar algo entre 30 minutos e 1 hora para completar.

Compartilhe esta postagem