Como utilizar o editor de texto Vim

A vida é muito curta pra esperar a IDE carregar pra poder programar. E se você, como eu, não tem um computador lá muito bom, também deve sofrer com o lag que dá ao utilizar IDEs entupidas de recursos, como o Eclipse. Além disso, às vezes estamos navegando por diretórios pelo terminal, e gostaríamos de editar um código-fonte por ali mesmo, e abrir uma IDE só pra isso é um tanto overkill. É por essas e outras que eu gosto de usar o Vim pra programar.

O que é o Vim

Vim (Vi IMproved) é um editor de texto relativamente simples, voltado para programadores, que pode ser executado no terminal. O Vim conta com diversos comandos que facilitam a navegação pelo teclado, o que também é muito bom pra quem programa sem mouse (meu caso, porque uso notebook).

O Vim é conhecido por ter uma curva de aprendizado… íngreme, digamos assim. Parte dessa fama vem do fato de que seu antepassado, o vi, e as versões iniciais do próprio Vim, eram realmente difíceis de utilizar. Não era possível utilizar as setas do teclado pra navegar pelo texto, e sim as teclas h e l para subir e descer e j e k para ir para os lados, apenas para dar um exemplo. Esse ainda é o jeito “vim” oficial de fazer as coisas, mas o fato é que as versões mais recentes contam com diversas facilidades, como autocompletar, suporte a abas e janelas e… às setas do teclado.

O Vim possui dezenas de comandos, e suas funcionalidades podem ser estendidas através de plugins e instruções inseridas em seu arquivo de configuração. Nesse texto, vou apresentar apenas o suficiente para que você se familiarize com o ambiente e possa utilizar o editor de maneira razoavelmente eficiente.

Nota: apesar de existirem versões do vim que rodam no ambiente gráfico, aqui vamos utilizar a versão mais tradicional que roda no emulador de terminal do Linux.

Instalando o Vim

Em primeiro lugar, é preciso instalar o Vim, o que no Ubuntu/Debian pode ser feito através do comando no terminal:

sudo apt-get install vim

Se você já tiver o Vim instalado, certifique-se de estar usando uma versão recente, para poder utilizar os recursos mais novos do editor. No momento da escrita desse texto, a versão mais recente era a 8.1. Você pode checar essa informação com o comando:

vim --version

Um primeiro contato com o Vim

Agora podemos começar a praticar. Para abrir um arquivo com o Vim, basta digitar o comando vim no terminal seguido do nome do arquivo. Se o arquivo não existir, o vim criará um novo arquivo de texto em branco no diretório corrente. Então, vamos criar um arquivo novo:

vim teste.c 

Você vai se deparar com uma tela preta com um til azul em cada linha além da primeira. Esse til serve para indicar que essa linha ainda não existe.

Se você tentar digitar alguma coisa logo depois de entrar no Vim, você não vai conseguir.

Os três modos de operação do Vim

Isso é porque o vim possui três modos básicos de utilização. O modo inicial do programa é o chamado modo normal, em que as teclas são utilizadas para executar comandos. O modo visual permite a seleção de trechos de texto, para aplicar alguma edição, e veremos melhor como ele funciona mais à frente. Para escrever é preciso primeiro passar para o modo de inserção. Uma das formas de passar para esse modo é através da tecla I.

Entrando no modo de inserção

Vale dizer que o Vim diferencia maiúsculas e minúsculas para os comandos. Então i e I são comandos diferentes! O comando i entra no modo de inserção no local onde o cursor está localizado, enquanto o I entra no modo de inserção no início da linha onde o cursor está localizado. Como o texto está em branco, nesse momento tanto faz, mas é importante ter isso em mente. Vamos digitar alguma coisa no editor. Comecemos pelo começo, digite I (ou i) e escreva:

int main(void){

E tecle enter. Provavelmente seu editor alterou a cor das palavras-chave int e void e indentou automaticamente o código quando você inseriu a primeira chave e pulou uma linha.

O Vim identifica a linguagem que você está usando através da extensão do arquivo e carrega as configurações para fazer o realce de sintaxe de acordo com essa informação. E as versões mais recente do Vim costumam vir com o recurso de autoindentação ativado por padrão.

Certo, vamos continuar. Continue digitando as linhas a seguir:

        int a;
        int b;
        int c;
        int d;
}

Uma prévia do poder do Vim

Agora vamos supor que você mudou de ideia, e não quer mais aquela declaração da variável a. Você poderia subir o texto com as setas ainda no modo de inserção e deletar tudo utilizando o delete. Mas vamos tentar outra coisa.

Pressione Esc, para voltar para o modo normal, agora digite a sequência de teclas 2gg, e em seguida digite dd.

Se tudo deu certo, a linha que continha a declaração int a; sumiu completamente, correto?

Vamos entender exatamente o que aconteceu:

Esc: ao pressionar Esc, você sai do modo de inserção e retorna para o modo normal.

2gg: gg é um comando que, sozinho, é utilizado para retornar à primeira linha do arquivo. Mas quando colocamos algum número antes de gg, ele pula para a linha correspondente a esse número.

dd: deleta (ou corta) a linha em que o cursor está posicionada.

Legal, né? Com a prática, podemos editar nosso código de maneira realmente rápida. Agora, vamos nos aprofundar mais em cada um dos modos do vim.

O modo de inserção no Vim

Como já falei anteriormente, para sair do modo normal para o modo de inserção podemos utilizar o comando i ou o I.Mas eles não são os únicos.Ao todo temos 6 comandos, cada um retorna para o modo de inserção em uma posição diferente:

iInsere texto imediatamente antes do cursorIInsere texto no início da linha
aInsere texto imediatamente depois do cursorAInsere texto no final da linha
oAbre uma linha nova abaixo do cursorOAbre uma linha nova acima do cursor

Navegando pelo documento no modo normal do Vim

Certamente, já uma das maiores qualidades do Vim é a facilidade com que podemos navegar pelo nosso arquivo de texto utilizando o teclado. No modo inserção, podemos navegar pelo texto utilizando as setas do teclado.

Já no modo normal (pressionando Esc) temos vários outros meios de navegar pelo documento. Além das setas (se você for um radical anti-setas, você também pode utilizar as teclas h, j, k e l no modo normal para a mesma funcionalidade), podemos:

  • navegar para o início, meio, ou final da tela com as teclas H (high), M (medium) e L (low)
  • gg para ir para o início do documento, ou Xgg (onde X é um número) para ir para a linha X.
  • G para ir para o início do documento.
  • 0 (zero) e $ para ir para o início e o fim da linha, respectivamente.

É importante se familiarizar também com seis comandos muito úteis para navegação ao longo de uma linha:

  • w pula para o início da próxima palavra (entendida como uma sequência de letras e/ou números).
  • W pula para o início da próxima palavra (que pode conter pontos e outros caracteres especiais).
  • e pula para o final de uma palavra (entendida como uma sequência de letras e/ou números).
  • E pula para o final de uma palavra (que pode conter pontos e outros caracteres especiais).
  • b pula para trás para o início de uma palavra (entendida como uma sequência de letras e/ou números).
  • B pula para trás para o início de uma palavra (que pode conter pontos e outros caracteres especiais).

DICA: Você deve ter percebido que algumas letras são ligadas a comandos diferentes, mas parecidos, dependendo de se estão em caixa alta ou não. Um macete pra utilizar com mais naturalidade esses comandos (principalmente se você é o tipo de pessoa que usa mais o caps lock que o shift) é pensar o comando B como shift+b (afinal, quando você aperta shift, você está ativando momentaneamente a caixa alta). Ou seja, pensar o shift como o modificador de um comando. Claro, nem sempre essa analogia funciona, mas ela funciona em muitos casos. Como com os comandos, i / I, a / A, o / O, w / W, e / E e b / B.

O modo de comandos do Vim

Esse modo, na verdade, é um “submodo” do modo normal no Vim. Ele é ativado quando digitamos : (dois pontos). Depois disso, podemos digitar um comando e pressionar Enter. Por exemplo, digitando :set nu, o vim passa a mostrar o número das linhas no canto esquerdo da tela. O comando que está sendo digitado depois de : pode ser visualizado no canto inferior esquerdo da tela do vim. Mais abaixo, veremos alguns comandos que utilizam esse modo.

O modo visual do Vim

O modo visual do vim é utilizado para selecionar partes do texto. É o equivalente ao que fazemos em outros editores de texto pressionando shift e usando as setas ou clicando com o cursor numa área de texto e arrastando o mouse em alguma direção. Mas no vim, (como quase todas as vezes), fazemos isso de um jeito um pouco diferente.

Para conseguirmos selecionar uma parte do texto, primeiro movemos o cursor até o início da parte que queremos selecionar, apertamos Esc para ir para o modo normal, e depois apertamos v. Agora podemos selecionar o texto que queremos utilizando as mesmas teclas de navegação apresentadas acima.

Também é possível utilizar o V maiúsculo para selecionar linhas inteiras, ao invés de caracteres individuais, e o ctrl+v para selecionar colunas (é mais fácil entender o que é isso fazendo do que lendo uma explicação, então tente você mesmo!).

Com o texto selecionado, você, pode, por exemplo, utilizar o comando d para deletar ou copiar a parte selecionada, os comandos > e < para indentar ou “desintentar” um bloco de código (se os comandos > < forem precedidos por um número x, o vim indenta/desindenta em x níveis), e os comandos U e u para colocar todo o texto selecionado em caixa alta ou caixa baixa.

Os comandos mais importantes para a sobrevivência no Vim

Agora que você já aprendeu como começar a editar e navegar pelo seu texto, vou apresentar um guia de sobrevivência pra você conseguir se virar com o Vim, enquanto ainda não pega o jeito com seus recursos mais complexos (registros, abas, múltiplas telas, etc.).

Salvar um arquivo e sair do Vim

Para salvar um arquivo no Vim, basta digitar (em modo normal) o comando :w (dois pontos, seguido da letra w) e dar enter.

Para sair do Vim, você pode utilizar o comando :q (dois pontos, seguido da letra q).

(Sempre lembrando que o Vim é case sensitive, ou seja, :w é diferente de :W!)

Se você tentar sair do Vim sem salvar seu texto, ele vai mostrar uma mensagem de erro. Se você realmente quiser sair sem salvar o arquivo, você pode acrescentar ! (exclamação) ao comando, digitando então :q!.

Se você quiser salvar e sair, você pode unir os dois comandos e digitar :wq e pressionar enter.

Por fim, se você quiser salvar o arquivo com outro nome, você pode utilizar o comando :sav nome_do_arquivo

Autocompletar no Vim

O recurso de autocompletar é realmente uma mão na roda. Infelizmente, com a configuração padrão do Vim, não recebemos sugestões para autocompletar uma palavra enquanto digitamos. Mas quando queremos autocompletar uma palavra, podemos pressionar (no modo de inserção) ctrl+n, e navegar pelas sugestões utilizando n e p (com o ctrl ainda pressionado) e então pressionar Enter.

Cortar, copiar e colar no Vim

Essa é certamente a funcionalidade mais importante do século XXI, e é impossível sobreviver sem ctrl+C ctrl+V. A boa notícia é que o Vim também tem suporte aos recursos de cortar, copiar e colar.

Recortando, colando e copiando dentro do Vim

O vim utiliza registradores internos pra armazenar trechos recortados ou copiados (ou seja, normalmente ele não usa o clipboard (embora isso também seja possível, como veremos abaixo). Você já aprendeu (talvez sem saber) a recortar trechos do seu texto: utilizando o dd em modo normal ou o d, em modo visual. Pois é, além de deletar, esses comandos armazenam o que foi deletado em um registrador e você pode colar esse trecho mais tarde.

Para copiar o texto, utilizamos o y no modo visual (o comando vem da palavra yank), ou y seguido por um comando de navegação no modo normal. Por exemplo, yw copia a palavra à frente do cursor.

Por fim, para colar o texto, utilizamos p ou P, para colar antes ou depois do cursor, respectivamente.

Colando texto do clipboard para o Vim

Se você quiser colar algum texto do clipboard para o vim, você primeiro deve habilitar a opção paste, com o comando :set paste. Depois disso, basta utilizar a sequência de teclas para colar texto usada pelo seu emulador de terminal (geralmente ctrl+shift+v) no vim. Isso funciona tanto no modo normal quanto no modo de inserção.

Porém, essa opção pode interferir em outros comandos do vim, portanto, depois de copiar, é recomendável desabilitá-la com o comando :set nopaste.

Usando o mouse no Vim

Se você praticar, usar o teclado pode ser muito mais rápido que o mouse, mas como você está aprendendo, então vou dar uma colher de chá e contar um segredo: é possível usar o mouse para selecionar texto entrando no modo visual automaticamente, e também para clicar em uma linha do texto que queremos editar. Para isso basta entrar no modo normal e digitar :set mouse=a

Buscar uma palavra no Vim

Para buscar por alguma palavra no vim, basta entrar em modo normal, digitar /, escrever a palavra e pressionar enter. O cursor se moverá para o primeiro resultado, então você pode pressionar n para navegar pelos próximos resultados.

Com essas dicas e comandos, você já tem o suficiente pra se familiarizar com o vim. À medida que você for se aprimorando, vai sentir a necessidade de coisas mais complexas, e pode apostar, o vim te oferece tudo que você precisar! Você pode rodar um comando do terminal pelo vim, abrir múltiplas abas, dividir a tela para ver dois ou mais arquivos ao mesmo tempo, abrir múltiplos arquivos em buffers diferentes, configurar o tema de cores do vim, e muito mais. Eu pretendo postar mais conteúdo sobre o vim aqui no blog, então continue acompanhando!

Related Posts

One thought on “Como utilizar o editor de texto Vim

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *