Vim: O editor

Olá, pessoal!

Quem me acompanha pelo Twitter (@InFog9), ou me conhece pessoalmente, já deve ter me ouvido falar, muito, do editor Vim e de mil e uma maravilhas que eu falo a respeito dele. Alguns levam um susto quando percebem que eu utilizo o Vim no meu dia a dia e até me perguntam como é que eu consigo trabalhar com um editor tão velho, antiquado e sem recursos.

vim

Pois bem, resolvi escrever este texto para ajudar a colocar mais um pouco de material de Vim na web e de repente até inspirar novatos e não iniciados no Vim a se aprofundar e a realmente entender e usar o editor com tudo o que ele tem de melhor.

Um pouco de história


Eu, assim como a maioria dos alunos de cursos de computação na época faculdade, sempre achei que as ferramentas de programação eram oferecidas pelos "fabricantes das linguagens". Como cheguei à esta brilhante conclusão? Muito simples: Aprendi que C++ era feito com o Borland Turbo C++, ou com o Borland C++ Builder. Aprendi que Pascal era com o Turbo Pascal e para usar Pascal com interfaces gráficas eu deveria usar o Delphi. Aprendi que Visual Basic se escrevia usando o Visual Basic (heim? mesmo nome de linguagem e IDE?). Aprendi que para Java tinha um tal de Eclipse. E é claro, aprendi que para PHP, HTML e outras linguagens do conjunto para WEB era feito com o DreamWeaver (Ou similares, acho que nunca usei o Dreamweaver, ufa!).

Pois bem, quando eu comecei a brincar com desenvolvimento para web, eu escolhi PHP e descobri uma coisa muito legal, (Eu já usava GNU/Linux, na época) que eu podia usar qualquer editor de textos para fazer PHP. E então eu escolhi um editor que já estava lá no meu ambiente gráfico (KDE, na época) e fiquei trabalhando com ele nas opções padrão mesmo, sem nem saber que dava para mudar o esquema de cores ou algo assim (O editor era o Kate).

Fiquei trabalhando com o Kate e mais tarde o Gedit por um bom tempo, e eu sentia falta de coisas como auto completar e ferramentas para auxiliar no dia a dia. até que fui apresentado ao NetBeans. Na hora eu falei: Ué, mas ele não é para Java? E descobri que, assim como o Eclipse, ele também suportava uma lista de linguagens e ferramentas.

O NetBeans, assim como o Eclipse, já se encaixam na categoria IDE, que é um ambiente mais completo para desenvolvimento, com ferramentas para debug, controle de versões, auto completar, documentação em balões na tela e coisas assim.

Durante todo este tempo o Vim era um editor usado muito lá de vez em nunca, apenas para editar arquivos de configuração e um shell script aqui e outro ali. E o engraçado é que muita gente vê o Vim assim mesmo, como uma ferramenta chata, esquisita e que só serve para complicar ainda mais as disciplinas que ensinam GNU/Linux e outros Unix.

E então, em um dia chuvoso, com raios, trovões e uma trilha sonora triste (ou não, nem lembro como estava o tempo, mas no cinema os dias tristes são sempre chuvosos) meu notebook praticamente morreu. Ele não ligava mais e eu tive que enviá-lo para uma assistência técnica. Eu iria ficar sem meu notebook por uma semana, mas não poderia deixar de trabalhar neste período, por isso peguei a única máquina disponível em casa, o Netbook da minha esposa. A máquina é um Acer Aspire One, telinha de 10", recursos limitados e certamente não o melhor local para rodar o Netbeans, minha IDE na época. Foi então que resolvi dar uma chance ao Vim.

Os primeiros passos


É claro que os primeiros passos foram desajeitados. A primeira coisa que fiz foi buscar referências e descobri que era possível deixar a configuração do Vim no Github. Nisso encontrei algumas configurações já prontas, mas não achei legal usar assim, pois eram configurações já cheias de coisas que eu provavelmente nem usaria. Aí resolvi começar o meu Vim. Criei um repositório no Github e comecei a brincar com as opções.

Em busca de referências, achei o Net Tuts + e um monte de dicas legais sobre plugins essenciais para Vim. Ao mesmo tempo em que buscava novos plugins, fui aprendendo os comandos do Vim. Eu pensei assim:

"Vou aprender um ou dois comandos novos por dia, assim, em apenas um mês saberei algo entre 30 a 60 comandos e com isso é possível fazer muita coisa."

E realmente foi mais ou menos assim. Com alguns comandos novos todos os dias, sem forçar a barra, acabei aprendendo bastante.

Encarando o desafio


Depois de uma semana usando o Vim, meu notebook voltou e lá estava o Netbeans me esperando, com todas as facilidades já embutidas (e o peso incrível na ram...). Eu removi o Netbeans para não cair na vontade de abri-lo, baixei minha configuração do Vim no note, inspirei fundo e resolvi encarar mais um tempo com o Vim.

vim

A busca por novos plugins continuou e eu basicamente jogava os plugins na configuração, deixando o repositório uma bela bagunça. Remover um plugin era bem complicado, além da mistureba de readmes que tinha lá.

Aí conheci umas opções interessantes para gerenciar os plugins, uma delas é o Vundle. Com o Vundle é possível gerenciar facilmente os plugins, indicando seus repositórios no Github ou no Vim Scripts.

Uma coisa que comecei a fazer após começar a usar  o Vim é ler o vimrc (arquivo de configuração do Vim) de outras pessoas. É incrível com dá para pegar boas ideias olhando as configurações de outras pessoas. Acho que isso não é possível com opções como Eclipse e Netbeans, onde você usa o que tem nele e pronto.

Evoluindo com o Vim


Aprender alguns comandos do Vim é legal e realmente é possível se virar bem com o editor sabendo apenas uns 10 ou 20 comandos. Mas quanto mais se aprende, mais é possível extrair das ferramentas que se usa. Uma coisa que demorei bastante para fazer foi a navegação usando as teclas h, j, k e l. Sempre preferi ficar com as setas mesmo, mas depois que resolvi dar uma chance para a navegação padrão do Vim, acabei me acostumando e gostando bastante, pois agora preciso mover os braços menos vezes, e isso é menos cansativo. Pode parecer que não, mas ajuda até a manter uma postura melhor usando o teclado, além de reduzir drasticamente o uso do mouse.

Uma opção bacana é aprender a usar a VimL, a linguagem de programação do Vim, com ela é possível fazer seus próprios plugins. Eu até já estou me arriscando a escrever uns plugins e a ajudar em outros que eu uso no dia a dia.

Como muita gente me pergunta os plugins que eu uso, aqui está uma lista dos mais interessantes:

  • Nerdtree para navegação em árvore de diretórios

  • CtrlP para pesquisa de arquivos

  • Powerline para uma barra de status que diz muito

  • Syntastic para indicar erros de sintaxe e até padrões como a PEP8 (Python) e PSRs (PHP)

  • VDebug para usar o XDebug com PHP, funciona para outras linguagens, eu contribuí com este plugin =)

  • Snipmate para snippets em código (Existem algumas versões interessantes deste)

  • Numbers para alternar entre a numeração absoluta e relativa das linhas, ótimo para se movimentar usando coisas como "10j" para descer 10 linhas.


Ah, para acompanhar melhor, veja o repositório do meu vim no Github e é claro, leia o meu vimrc para se inspirar.

Eu já uso o Vim há uns 2 anos, então deu tempo de aprender bastante coisa =)

Olha o meu vim atual (já que eu mudo coisas frequentemente). Veja que ele exibe o branch no Git, lista de diretórios, lista de métodos, etc:

vim

Algumas dicas


Agora, mais algumas dicas para você usar Vim:

  • Tenha uma boa motivação pessoal.

    • Não queira usar Vim por que fulano usa ou por que é cool, use por ele ser um ótimo editor.



  • Estude com alguém ou algumas pessoas

    • Isso ajuda bastante a manter a motivação e vocês podem trocar ideias



  • Não desista!

    • os primeiros dias serão difíceis, você vai querer voltar para a sua IDE, mas se mantenha firme!



  • Monte seu vimrc

    • Use os outros vimrc como inspiração, mas monte o seu, uma peça por vez. Não adianta começar com quinhentos plugins, o ideal é conhecer um a um, conforme a necessidade



  • Calma, a curva de aprendizado é grande

    • É isso mesmo, não é tão simples começar a usar Vim, a curva de aprendizado é um pouco alta, por isso, se acalme e siga em frente




E por enquanto é isso. Se você for usar o Vim, boa sorte e seja bem vindo =)

InFog

Evaldo Junior

Desenvolvedor web, palestrante, escritor e usuário e contribuidor do Software Livre.

comments powered by Disqus