Integrando o Vim com ferramentas externas

Depois que comecei a usar o Vim nas palestras em que eu escrevo código, muita gente começou a me escrever com dúvidas sobre o editorzinho. Apesar de eu dizer nas palestras que Vim é complicado, parece que o pessoal não tem medo. E a dúvida mais freqüente é sobre a integração entre o Vim e ferramentas externas, principalmente o txt2tags.

Faz parte da filosofia Unix que um programa seja facilmente integrado a outros através de interfaces de texto, e o Vim implementa isso muito bem. Para começar, abra o Vim e execute:

:!ls

Você vai ver que o Vim vai executar o comando ls. Então guarde isso, o sinal de exclamação (!) executa comandos externos. Há duas maneiras de fazer o Vim falar com esses comandos. A primeira é mandar o Vim ler a entrada do comando. Digite:

:r!ls

Você vai notar que o Vim vai executar o comando ls e colocar o conteúdo no buffer de edição. A outra maneira de fazer o Vim falar com os programas externos é selecionar texto. Aperte i para ir para o modo de edição e digite:

zebra
tesoura
banana
macaco
felicidade
abacate

Ao terminar de digitar, pressione ESC para voltar ao modo de comando, em seguida SHIFT+V para ir para o modo de seleção de linha e selecione todo o bloco. Com o bloco selecionado, digite:

:!sort

O vim vai colocar, antes do comando, os sinais de seleção ‘<,'>. Não se preocupe, apenas digite o comando e aperte ENTER. Você vai ver que o Vim vai executar o comando sort do sistema operacional, passando como entrada o texto selecionado, e vai substituir esse texto pela saída do comando. Isso, ao final, vai te dar a lista ordenada, assim:

abacate
banana
felicidade
macaco
tesoura
zebra

Usando essa interface simples você pode fazer o Vim falar com qualquer programa Unix.

txt2tags

O programa que eu tenho usado durante as palestras e mais tem deixado as pessoas curiosas é o txt2tags, desenvolvido pelo Aurélio Marinho. O programa está nos repositórios do Debian, então se você usa Debian ou Ubuntu, pode instalá-lo com o comando:

sudo apt-get install txt2tags

O txt2tags lê as primeiras linhas de texto que recebe como títulos do documento. Além disso, precisaremos de várias opções de linha de comando, o que não é conveniente de se digitar. Então vamos criar um shell script para guardar essas opções e fornecer ao txt2tags linhas de cabeçalho de mentirinha. Eu criei um arquivo chamado tags dentro do diretório /usr/local/bin, com permissão de execução (chmod +x) e o seguinte conteúdo:

#!/bin/bash
(echo "
 
 
 
 
 
" && cat ) | txt2tags -t xhtml --infile=- --no-headers

Em seguida, basta abrir o Vim e digitar, por exemplo:

= Aprenda Online =
A [Visie http://visie.com.br/] oferece cursos de Ajax, Javascript e Tableless.

Em seguida selecione essas duas linhas e execute:

:!tags

Pronto, HTML instantâneo.

12 comments on “Integrando o Vim com ferramentas externas

  1. Hey! Voltei a estudar o gVim (em windows.. é verdade) e achei muito legal o seu post. Por algum motivo desconhecido o comando para ordenar (:!sort) não funciona no windows! Tive que usar o (:sort), sem o ! mesmo.

    Obrigado por compartilhar informações tão interessantes.
    Abração.

  2. Olá, usar o txt2tag é complicado? Esquece, vou baixa-lo para testar.
    Só pra constar, não visitei seu blog antes por falta de tempo. Sou o cara da palestra em Brasília, o fã do Darth Vader, hehehe.
    Abraços.

    P.S.: Está no meu ‘favoritos’, você é f0d4!

  3. Minhas considerações
    1-vim é o editor mais bizarro q ja vi na vida… graças a ele as pessoas me chamam de maluco quando eu preciso mexer no bloco de notas no windows e aperto :wq pra sair…
    2-Eu não sabia que o txt2tags era ideia do Aurélio… Eu tenho os 2 livros dele e sinceramente ele é o melhor autor que conheço sobre manipulação de informações. Espero muito que ele escreva mais livros pra encher minha prateleira e o meu cérebro…rs
    3-Gostei do seu blog e da forma direta com que posta. Parabéns

  4. Oi Elcio, fico feliz em saber que você usa e gosta do txt2tags!

    Só uma dica: basta a primeira linha ser em branco para o txt2tags entender que não há cabeçalhos, então seu script pode ser simplificado para:

    (echo && cat ) | txt2tags …

  5. Eu fui um dos que chegou em casa e instalou o Vim depois de ver uma de suas palestras, no ELPI de POA. Ando estudando muito o editor, e mesmo que eu ainda não consiga usá-lo suficientemente bem, ele é simplesmente sensacional. Dicas anotadas! Estava mesmo curioso quanto a isso…

Deixe uma resposta

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