terça-feira, 21 de agosto de 2012

O editor de textos Vim - Básico


O Vim é um editor de texto extremamente poderoso e muito utilizado. Para quem não o conhece, sua aparência não promete grande coisa. Mas as aparências enganam. Ele possui uma infinidade de funções e é extremamente eficiente uma vez que você aprenda a usá-lo. Chega a ser comparado com IDEs poderosas como Eclipse e NetBeans.

O maior problema do vim é aprender a usá-lo. O início do aprendizado sobre o uso do vim é penoso. Pois tudo depende de linhas de comando. Não há balõezinhos com mensagens de ajuda, nem menus, nem nada disso. Por isso, vamos disponibilizar aqui mais um material para tentar fazer com que o aprender a usá-lo se torne algo mais fácil.

O grande foco do Vim é ser extremamente eficiente e acelerar a velocidade de trabalho do desenvolvedor/editor que o usa. Por isso, ele toma em conta todos os menores detalhes possíveis para que você não tenha que tirar suas mãos do lugar. Algo que, para quem está acostumado com usar o mouse para quase tudo, é quase inconcebível. Na época da faculdade eu via um sujeito ou outro praticando vim/vi e pensava comigo: "Tontos masoquistas!". Hoje vejo que tinham razão. O Vim é difícil, mas vale a pena.

Instalando o Vim

No Linux, basta você executar sudo apt-get install vim, ou 

Nota importante:

Se você estiver no UNIX/LINUX, execute o seguinte comando:
$ touch ~/.vimrc

Ao criar o arquivo ~/.vimrc, você avisa ao Vim que quer utilizá-lo no modo Vim. Ahn?!?! Se você não fizer isso, o Vim será executado em modo de compatibilidade com o Vi e muitas das funcionalidades avançadas serão perdidas, elas vão ser utilizadas no decorrer dos nossos tutoriais. De qualquer forma, você pode ativar as funcionalidades mais avançadas usando o comando :set nocompatible<Enter> dentro do Vim.

Se você estiver no Windows, o processo de instalação cria o arquivo .vimrc com o nome de _vimrc.

Comandos básicos

Como o título diz, vamos começar com os comandos mais básicos do vim. Ou seja, aqueles comandos sem os quais você não faz nada no editor. Que são:
  • Os comandos para mover o cursor
  • Como inserir e apagar texto
  • Como obter ajuda
  • Sair do editor
Para executar o vim utilize o comando:
vim arquivo.txt

Quando você executar esse comando, você verá uma tela mais ou menos assim:
Note que embaixo está escrito "arquivo.txt" [New File]. Ou arquivo novo. Pois o arquivo ainda não existe. Se por algum acaso o arquivo.txt existir no seu computador a mensagem vai ser diferente. Aliás, as mensagens do vim são todas mostradas na parte de baixo da tela.

Os tis (~) indicam linhas que não fazem parte do seu arquivo. Essas linhas são usadas para mostrar que o espaço extra sendo mostrado não faz parte do arquivo, são linhas criadas apenas para completar o espaço da tela.

Modos

O Vim é um editor com modos. Ou seja, ele é bem educado, sabe se comportar bem na mesa... Ok ok. Ele é um editor modal. Isso quer dizer que ele se comporta de formas diferentes conforme o modo ativado.

Se a parte de baixo estiver sem nada, você está no modo normal - também chamado de modo de comandos. Se você está no modo de inserção vai estar escrito INSERT e no modo visual, VISUAL. Há o modo REPLACE, que é igual ao INSERT mas quando você digita ele escreve por cima dos caracteres presentes no texto ao invés de inserir no meio deles.

Sabendo da existência dos modos, podemos começar. Por enquanto você não editará nada de forma rápida, nem eficiente mas conseguirá editar. Que é o primeiro passo. O mais importante.

Para começar a editar, temos que ir para o modo de inserção (INSERT). Pressione i ou Insert e note que o modo atual vai mudar para INSERT e você poderá inserir texto. Tente digitar um pouco para entender melhor como a coisa funciona. Digite o seguinte texto:
Não é que eu tenha medo de morrer.
É que eu não quero estar lá na hora que isso acontecer.

Era tão azarado que, se quisesse achar uma agulha no palheiro, era só sentar-se nele.
Era um menino tão mau que só se tornou radiologista para ver a caveira dos outros.

Não se preocupe se você cometer erros ao digitar, podemos corrigir depois. Assim que terminar de digitar. Pressione a tecla ESC. O INSERT escrito embaixo vai sumir e você volta para o modo normal.

Problemas com os modos

Um dos maiores problemas de iniciantes no Vim é fazer confusão com os modos dele, seja por esquecer em qual modo você está ou por mudar o modo atual por usar um atalho sem saber. Para voltar ao modo normal, não importa em qual modo você esteja, é só apertar a tecla ESC.

Mover o cursor

No modo de comandos, ou modo normal, você pode movimentar o cursor pela tela usando as teclas: h(esquerda), j (baixo), k (cima) e l (direita). Pode parecer que esses atalhos foram escolhidos de forma aleatória, mas não foram. São as teclas que ficam exatamente onde sua mão direita deve ficar quando se está digitando. O que faz com que você não precise tirar a mão do lugar enquanto passa da tarefa de digitar para a de movimentar o cursor no texto.

Você também pode mover o cursor usando as setas. Porém, elas reduzem muito o seu rendimento. Uma vez que você tem que tirar a mão da parte textual do teclado e posicioná-la nas setas. É bem pouco tempo se você não fizesse isso na casa de centenas de vezes por hora. O que acaba por tomar um tempo considerável, ainda mais que as setas podem variar de posição de um teclado para outro. Lembre-se, o foco do Vim é eficiência nos mínimos detalhes. Portanto, se acostumar com o hjkl é obrigatório para usar o Vim de verdade.

Uma maneira de memorizar esses comandos é lembrar que o h fica a esquerda, l fica na direita e o j é um gancho para baixo. O k é cima por exclusão. Mas a melhor maneira para memorizar de verdade é praticar e usá-los bastante, até que você quase nem precise pensar para usá-los.

Apagar caracteres

Par apagar um caractere, mova o cursor sobre ele e aperte x (na época das máquinas de escrever as coisas eram "apagadas" escrevendo x sobre as letras). Para testar, mova o cursor para o início da primeira linha, por exemplo, e pressione o x várias vezes. Você vai notar que os caracteres são apagados da mesma forma como se você estivesse usando a tecla Del. Ela funciona também, mas não é tão eficiente quanto usar o x.

Para corrigir o texto apagado, pressione i (para entrar no modo de inserção), redigite o trecho apagado e pressione Esc (voltar para o modo de comandos).

Nota

Vim é um editor de texto que não faz quebras de linha automaticamente. Se você não pressionar Enter  ao final de cada linha você terá linhas de texto gigantes. Ele vai exibir com quebras de linha para ser visível na tela e nada mais. É possível configurar o Vim para isso, porém, vamos falar disso depois.

Desfazer e refazer

Suponha que você apague algo que não devia. Você pode digitar de novo, mas há uma forma mais fácil. O comando u desfaz a última edição. Faça um teste no texto. Apague alguma coisa pequena dele (uma ou duas palavras) com x e pressione u. Note que a cada vez que você pressiona u uma letra é recuperada até todo o trecho apagado ser recuperado.

Se você desfizer demais, você pode pressionar Ctrl+r para refazer, ou seja, reverter o que foi desfeito.
Pressione Ctrl+r algumas vezes e você verá o trecho do texto que você acabou de recuperar ser apagado novamente letra por letra.

Tem uma variante do comando de desfazer, o U (U maiúsculo, ou Shift+u). Ele desfaz de uma vez só todas as edições realizadas na última linha editada. Utilizar esse comando duas vezes faz com que ele volte a linha ao normal novamente.


Sair do editor

Para sair, use o comando ZZ (sim, dois zês maiúsculos). Este comando salva o arquivo e sai. Se você escrever por cima de algum arquivo ou versão deste mesmo arquivo você vai perder tudo. O Vim não faz backup automaticamente. A não ser que você o configure para isso, mas são comandos e configurações avançadas que vamos tratar bem mais pra frente.

Jogando mudanças fora

Às vezes acontece de você fazer algumas mudanças num arquivo e decidir que elas não valiam a pena. Ou por ser algum arquivo de configurações importante do sistema que você quer garantir que ao sair nenhuma mudança seja salva. É simples! O comando :q! faz isso.

Quando você está no modo de comandos, você digita ":". Esses dois pontos vão aparecer no começo da linha embaixo da tela. Então você digita o q e a exclamação normalmente. Eles vão aparecer ali também e qualquer outra letra que você quiser, mas se atenha a essas ou sabe-se lá que comandos você vai passar para o Vim.

Os dois pontos ativam um modo de comandos na linha inferior. Esse modo é para realizar vários comandos de uma vez e comandos que possuem modificadores, como o comando para fechar o arquivo. Operação realizada pelo comando q. E a exclamação é um modificador para forçar o Vim a fazer algo. No caso é necessário pois o Vim não aceita jogar alterações fora. Ou você as salva, ou você força ele a jogá-las fora. Note que ao digitar nada acontece, o caractere aparece ali na linha e só. O comando só é enviado quando você pressiona Enter.

Se você digitar só :q num arquivo que possui alterações que ainda não foram salvas, o Vimvai mostrar uma mensagem de erro. Faça alguma alteração e teste o :q para você conhecer a mensagem e saber que para sumir com ela é preciso pressionar dois pontos de novo. Depois faça o comando correto e você vai notar que o vim vai fechar e o tudo que você fez foi perdido.


Quando você especifica que quer forçar o comando, você diz ao Vim: "Eu sei que o que estou fazendo parece estúpido, mais eu sou um garoto crescido e sei o que estou fazendo."

Outros comandos de edição

Agora que já vimos os comandos mais básicos, vamos para alguns comandos um tico mais avançados. Com o comando i inserimos caracteres na posição anterior ao cursor. E se quisermos adicionar texto após o cursor para adicionar texto ao fim da linha? Para isso temos o comando a (vem de append, que seria traduzido com anexar).

Por exemplo, mova o cursor para o final da linha. Pressione a e digite algo como pontuação. Note que o cursor não ficou parado quando você apertou o a ele se moveu para frente para inserir os pŕoximos caracteres a frente de local onde seria se usássemos o i.

Apagar uma linha

Para apagar uma linha, use o comando dd. Ele apaga a linha inteira em que o cursor estiver. Para ver como é crie algumas linhas no Vim com texto inútil e as apague usando o comando dd.

Criar novas linhas

Utilize o comando o para criar uma nova linha. Ele cria uma nova linha, move o cursor para ela e entra no modo de inserção. Faça alguns testes. E aproveite para praticar também o comando dd.

Agora, se você quiser criar uma nova linha acima ao invés do comum que é abaixo. Utilize o comando O. Igual ao comando o, mas cria uma linha acima da linha atual. Aproveite e pratique um pouco mais o comando dd.


Ajuda

Temos também o comando help. Ele serve para mostrar a ajuda do Vim. O único problema é que a ajuda é em inglês. Então, se você não souber inglês, não vai ajudar muito. De qualquer maneira, o comando help é mais um comando iniciado com dois pontos. Digite :help, pressione Enter e você verá a ajuda do Vim:

Note que a ajuda é exibido como um texto dentro do próprio editor. É uma coisa bacana, porém também meio preguiçosa de ter sido feita.
Para se mover na ajuda você pode usar todos os comandos do Vim como h, j, k e l. E para sair da ajuda use os mesmos comandos para sair do Vim como o ZZ e o :q. Por falar nisso, notou qual a diferença entre os dois comandos? Não? Bem, o ZZ simplesmente fecha o Vim e mantém tudo como estava guardado em seu buffer. Já o :q limpa o buffer e joga todas as alterações fora de forma irrecuperável. É grande a diferença, mas na prática é algo bem sutil.

Se você der uma olhada no texto, vai notar alguns termos delimitados por barras verticais. Por exemplo |:help|. São hiperlinks do Vim chamados de tags (ou marcadores). Se você posicionar o cursor em qualquer lugar entre as barras e pressionar CTRL+], o sistema de ajuda te leva para o local indicado. Da mesma forma como quando você clica em um link numa página web. Depois de acessar algumas tags, você pode querer voltar para a tela onde estava antes. O CTRL+T te leva de volta a tela anterior como o botão voltar de um navegador faria.
No topo da tela, tem uma notação *help.txt*. Isto é usado para definir qual o alvo de um link. Ou seja, seremos levados para esse ponto quando "clicarmos" em |:help.txt|.


Além de exibir a tela de ajuda geral, o comando :help pode ser usado para obter ajuda sobre comandos e tópicos do Vim: :help assunto.

Quer ajuda sobre o comando x:help x

Quer saber sobre como apagar texto? :help deleting

Quer ver o índice de conteúdo da ajuda? :help index

Quando precisar de ajuda sobre algum comando que envolva, por exemplo, a tecla CTRL:  :help CTRL-A

Por padrão, quando você usa o comando de ajuda, o Vim procura por comandos do modo normal. Por exemplo, se você procurar por :help CTRL-H ele vai te dar a explicação de como utilizar isso no modo normal. Para especificar em qual modo você quer ajuda é preciso especificar com um prefixo.
Se você quiser ajuda para o modo de inserção, o prefixo é i_. Por exemplo: :help i_CTRL-H




Teclas especiais são especificadas usando os sinais de maior e menor. Por exemplo, para ajuda com a seta para cima, digite :help <Up>

Você também pode ir para a tela de ajuda usando a tecla <F1>. Se seu teclado tiver a tecla <Help>, ela terá o mesmo efeito que pressionar <F1>.

Usando contadores para digitar mais rápido

Suponha que você queria mover o cursor nove linhas para cima, você pode digitar kkkkkkkkk ou você pode usar o comando 9k.
Todos os comandos de movimento podem ser precedidos por um número. Além disso, podemos adicionar vários caracteres repetidos utilizando contadores. Por exemplo, digitar 3a! no modo de comandos vai ter o mesmo efeito que a!!!. Que vai adicionar 3 exclamações no fim da linha.
O mesmo pode ser feito com o comando para apagar caracteres, 3x.

O tutorial do Vim

A versão UNIX do Vim possui um tutorial interativo que ensina basicamente o que este tutorial cobre. Para executá-lo basta digitar no terminal: vimtutor

O tutorial começa explicando como se movimentar para você poder lê-lo e acompanhá-lo. Gradativamente ensinando comandos um pouco mais difíceis.

Se você acompanhou tudo e praticou um pouco cada comando. Você já sabe o bastante para trabalhar com o Vim. Não muito bem, nem rápido, mas vai funcionar. Pratique bem estes comandos, então você estará pronto para se aprofundar mais no uso do Vim e poderá aumentar sua eficiência e agilidade na edição.



Fontes:
"The Vim book" - Steve Oualline (disponível em pdf aqui e aqui)





Nenhum comentário: