No último post falei sobre o meu desleixo com os editores de textos puros que usei nos últimos anos. Por pura comodidade, ou melhor, preguiça mesmo, tenho usado há muito tempo os editores de texto da modinha na época. Pelo lado da produtividade, essa é uma escolha simples de ser feita pois não força goela abaixo a curva de aprendizado de algo novo. Salvar sempre foi CTRL-S, search CTRL-F, replace CTRL-R, e por aí vai.

Mas um editor de texto puro é muito mais do que isso. Para um dev ou um sysadmin, ele é quase a figura onipresente no cotidiano do trabalho e da criatividade. Justamente por esta razão, e principalmente depois que eu migrei o meu blog para o Pelican, senti a forte necessidade de ter um editor de textos puros que atendesse as seguintes premissas (não necessariamente nesta ordem):

  1. Seja open source;
  2. Seja multiplataforma de verdade;
  3. Esteja prontamente disponível em qualquer servidor que eu precisar acessar;
  4. Possa ser amplamente customizável;
  5. Que a ausência de qualquer (ou toda a) customização não impeça o uso em estado puro;
  6. Suporte a realce de sintaxe, complementação de código e snippets em diversas linguagens;
  7. Ofereça corretor ortográfico em múltiplos idiomas.

Partindo desses princípios para guiar a minha busca, analisei superficialmente três competidores: Sublime Text, Emacs e Vim.

Eu cheguei a dar uma boa olhada no Sublime Text. Ele é lindo, leve, mas não é solto. Tudo bem que o Jon Skinner, desenvolvedor do Sublime, é um cara comprometido e fez dele o seu projeto de tempo integral (e eu admiro isso), mas vai que acontece alguma merda com o cara? Já ouviu falar em Bus Factor? Pois é.

Outro ponto no qual o Sublime perde pontos: apesar de ser multiplataforma, ele não está prontamente disponível em qualquer lugar. A instalação no Slackware foi tranquila e tals, e imagino que o mesmo se aplique em outras distros. Mas e se eu precisar dele no Android? Não rola. E se for num FreeBSD ou Solaris? Também não. Por essas razões eu consegui conter a empolgação do Sublime e segui num caminho diferente de doze entre dez devs que eu vejo por aí.

Emacs

Outro forte concorrente seria o GNU Emacs, da dupla fodona Stallman e Steele. Sobre essa interessante espécie de religião, a 'Igreja do Emacs', eu deixo três coisas.

A primeira vem da documentação não oficial do Sublime:

This information is hardly useful for anyone. Emacs is... Well, nobody really knows what emacs is, but some people edit text with it.

If you are an Emacs user, you’re probably not reading this.

-- Sublime Text Unofficial Documentation

A segunda é isso:

...you should learn Emacs by using it for about a decade.

-- Edward O’Connor (Um heavy user do Emacs.)

E a terceira: ctrl+shift+dash ! 3 == undo! WTF?!?

Logo, Emacs também está fora.

Restou o Vim

Daí a escolha foi fácil: Vim. Ele é leve, aberto, portátil, disponível, adaptável, flexível, bonito e fala bom português, inglês, alemão, francês, chinês, latin...

Na última semana investi um bom tempo mapeando minhas necessidades diárias e convertendo isso em configurações do Vim para facilitar o meu dia a dia.

A base deste trabalho foi uma descoberta fantástica que fiz quando comecei a olhar o Vim com outros olhos. Trata-se do spf13-vim, um framework para o Vim que implementa uma série de plugins e recursos prontos para usar.

A instalação do spf13 é ridiculamente simples. Uma vez instalado, out-of-the-box, um monte de coisa nova já aparece de cara quando você digita vim na sua linha de comando (ou vi se tem um alias vi='vim' em seu ~/.bash_aliases, ou abre o Gvim).

Mas como eu sou fresco, chato e detalhista, queria customizar mais algumas coisas. E o spf13 suporta isso através da criação de um arquivo ~/.vimrc.local.

Para tornar uma longa história curta, adaptei para as minhas necessidades diárias tanto o ~/.vimrc.local quanto o ~/.vimrc.bundles.local.

No primeiro, nesta ordem:

  1. Alterei alguns comportamentos padrão do Vim (ajustados pelo /etc/vimrc padrão e pelo spf13);
  2. Mudei o template de realce de sintaxe e do Airline para algo que gostei mais - incluindo uma degradação joinha (graceful degradation) dos esquemas de cores caso eu esteja no console puro, sem X;
  3. Ajustei a apresentação no Gvim para algo que considero mais apropriado;
  4. Defini umas rotinas automáticas úteis;
  5. Fiz um extenso mapeamento de atalhos em todos os modos do Vim;
  6. Mexi nos parâmetros iniciais de alguns plugins;
  7. Inclui algumas funções sob medida;
  8. Desativei alguns plugins que mais atrapalham do que ajudam.

No segundo, que controla o acionamento de plugins que não vêm com o spf13, apenas instalo alguns plugins que me serão úteis.

Uma dica: se você instalar novos plugins via ~/.vimrc.bundles.local ou remover os plugins instalados originalmente pelo spf13 via ~/.vimrc.local, rode os comandos para instalar, remover ou atualizar os plugins no Vim:

:BundleInstall "instala novos plugins
:BundleClean   "remove plugins
:BundleUpdate  "atualiza plugins

Esse código está todo no meu repositório dotfiles no GitHub (que em outro artigo eu contarei do que se trata). Se você gostou, pode ir lá, pegar, usar do jeito que está ou adaptar a vontade.

Amostrinha

Mas o quê esse trabalhão todo me deu em troca? Bem, algumas imagens explicam.

Vim: visual no X, navegação e janelas

Realce de sintaxe com tema hybrid, Airline com tema tomorrow e símbolos do Powerline, janelas (splits) vertical e horizontal e navegador NERD Tree. O look'n feel no Gvim é muito semelhante, exceto pelo ponto da fonte que aumenta um pouco.

Já no quesito correção ortográfica eu estou muito bem servido.

Vim: corretor ortográfico

Veja a função ToggleSpell() em ação. Ela funciona de forma cíclica para (1) selecionar idiomas ativos, (2) ativar todos os idiomas de uma só vez e (3) desligar completamente o corretor ortográfico.

Finalizando, quando eu estiver em um console com 16 cores como o do Slackware, num SSH com conexão sofrida e não puder contar com as sacanagens visuais do X, a degradação joinha me deixa trabalhar sossegado sem que eu tenha que abrir mão dos recursos avançados do meu Vim.

Vim: degradação joinha (graceful degradation)

Quando estou numa seção de console puro (sem X), os temas de realce de sintaxe e do Airline mudam radicalmente para se acomodarem às poucas cores do terminal, mas não atrapalham a visualização do conteúdo e nem perco as funções avançadas dos plugins. Note que a correção ortográfica também funciona perfeitamente neste modo.

Bacana, né? Acho que agora estou bem de editor de texto puro para uns bons anos sem ter que passar perrengue se por acaso eu migrar de distro ou plataforma.

Gostou? Tem dúvidas? Usa Emacs (e eu sei que você tá puto)? Comenta aí.