Matheus Calegaro

(mais um) Blog sobre desenvolvimento e outras bobeiras.

VIM sem preconceito

Você leu o título e já ficou assustado que eu sei, mas estou aqui hoje para acabar com o preconceito que muita gente tem com o VIM, o lendário editor de textos que roda direto do Terminal e que fez mais de 1 MILHÃO (e contando) de devs ficarem sem saber como sair dele.

Apesar de ter muito texto, este post também pode ser considerado uma cheatsheet.

Entrando no Vim

Para começar a editar um arquivo, digite:

vi ideia-genial.md

E você está dentro! Mas, e para sair?

Saindo do Vim

ATENÇÃO! Para sair do Vim é necessário um esforço descomunal e muita atenção, pois qualquer passo em falso pode ser fatal:

  1. Aperte a tecla “esc”;
  2. Digite “:q”;

Pronto, você saiu.

Mas pera aí, agora que chegou tão longe não vai querer também saber um pouquinho mais de como usar o editor em seu dia-a-dia?

Ótimo. Então vamos lá!

Tenha Modos

Voce está em um editor de textos e espera no mínimo poder teclar umas letras, mas ao entrar no Vim você percebeu que ao digitar qualquer coisa o texto não é inputado ou algo de estranho é exibido la no rodapé do terminal. Isso é porque voce está no modo “Normal”, onde o editor irá interpretar comandos e executá-los. Por questões de simplicidade, muitos desses comandos são apenas uma letra (“u” para desfazer) ou palavras bem pequenas (set, retab…).

Os tres modos do VIM sao:

  • Normal: Onde voce vai entrar os comandos. É acessado com a tecla “esc”;
  • Insert: Onde voce vai digitar suas coisas. É acessado com a tecla “i” a partir do modo Normal ou Visual;
  • Visual: Onde voce vai selecionar o texto e fazer operacoes como copiar e colar (principalmente). É acessado com a tecla “v” a partir do modo Normal;

Digitando coisas

Como dito acima, para poder começar a teclar você precisa primeiro entrar no modo Insert, pressionando a tecla “i” no modo Normal. Ao terminar de digitar, aperte “esc” para voltar ao modo Normal.

Salvando suas alterações

Agora que você digitou bastante, vai querer salvar o seu trabalho. Não tem erro: volte para o modo Normal (tecla “esc”) e digite o comando “:w” e tá guardado!

Você também pode fazer uma combinação de comandos para salvar e sair do programa. Tal combinação seria “:wq”. Difícil demais.

Ah, e para sair sem salvar, digite “:q!”.

Funções de máquina do tempo (ou quase isso)

Ninguém é perfeito (caso ainda não saiba) e você provavelmente vai cometer algum erro enquanto estiver digitando e vai querer desfazê-lo. Ainda bem que no Vim isto é SUPER SIMPLES: volte para o modo Normal (tecla “esc”) e aperte “u” (ou digite o comando “:undo”). Pronto.

E você vai querer também refazer algo digitado. Para isso, faça a combinação de teclas “CTRL+R” no modo Normal.

Copiando e colando

O atalho mais adorado de todos nós é o CTRL+C e o CTRL+V (depois do CTRL+ALT+Del, se você for usuário do Windows 😛) com toda certeza, e ele não poderia ficar de fora do Vim. É bom lembrar que esta função vale apenas para o clipboard do Vim; se você deseja copiar/colar algo de fora do editor, utilize os atalhos do seu emulador de Terminal (se estiver no Linux, provavelmente será CTRL+Shift+C e CTRL+Shift+V).

Para copiar/recortar:

  1. Posicione o cursor onde deseja começar a seleção (pode ser no modo Normal ou Insert);
  2. Entre no modo Visual (entre no modo Normal com “esc” e depois aperte “v”);
  3. Mova o cursor com as setas do teclado até selecionar o texto desejado;
  4. Aperte “y” para copiar ou “d” para recortar;

BÔNUS: Para copiar uma linha inteira (sem o caracter de nova linha), aperte “y$”. De nada.

Para colar:

  1. Posicione o cursor onde vai inserir o texto copiado/recortado (modo Normal ou Insert);
  2. No modo Normal, aperte “p” para inserir antes do cursor ou “P” para inserir depois do cursor.

Tabs

Também existem comandos específicos para tabulação do texto digitado. Por padrão, o Vim insere 1 caracter de tabulação ao pressionar a tecla Tab, mas se você quiser mudar para espaços, vá para o modo Normal e digite “:set expandtab”. Com isso, todo novo “tab” inserido no texto será convertido como 4 espaços. Para alterar toda a tabulação do arquivo para espaços, use o comando “:retab”.

Para mudar a quantidade de espaços inseridos pela tecla “tab”, use o comando “:set tabstop=2”, mudando o “2” pelo número que quiser.

Para mudar a quantidade de espaços inseridos para indentação, use o comando “:set shiftwidth=2”, mudando o “2” pelo número que quiser.

Algumas configurações úteis

Para melhorar um pouco sua experiência com este espetacular editor, eis alguns comandos de configuração que podem ser executados pelo modo Normal e podem estar no seu .vimrc. No meu caso, gosto de manter minhas preferências no .vimrc para evitar a fadiga.

$ cat ~/.vimrc

# Exibe o número das linhas do lado esquerdo
set number

# Habilita o carregamento de configs que estão dentro de um arquivo
# Exemplo: Ao encontrar /* vim: tw=60 ts=2: */ no arquivo que você
#          acabou de abrir, o Vim vai aplicar a configuração
#          tw=60 e ts=2, ignorando as suas preferências e mantendo
#          o padrão daquele arquivo aberto.
set modeline

# Habilita o syntax highlighting
syntax on

# Usa 256 cores (seu terminal também deve dar suporte à 256 cores para isso funcionar)
set t_Co=256

# Muda Tabs para espaços
set expandtab

:q

Como pode ver, não existe mistério no Vim. É normal que fiquemos com o pé atrás quando nos deparamos com os diversos atalhos e combinações de teclas para fazer algo trivial como copiar e colar um texto, já que estamos (mal) acostumados com interfaces gráficas e ferramentas que fazem tudo para nós antes mesmo de darmos um clique, mas é sempre bom saber lidar com programas mais “primitivos” e CLIs, pois mais cedo ou mais tarde você vai precisar fazer um bugfix direto no servidor e não vai ter Sublime Text nem Windows Explorer para lhe auxiliar (a não ser que você esteja usando Windows Server ou VNC, aí tudo bem).

Referência: Vim Tips Wiki

Comentários