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.
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.
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!
Era isso!
Era isso!
Orra, era isso que eu tava tentando lembrar!
Valeu 🙂
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
Sempre usei o vim para acessar meus documentos nos hosts, pena que eu não tenho permissão para realizar alguns comandos :/
Ótimo post! Já fiz aqui o tags também.
Só não entendi a sintaxe pra fazer as tabelas ainda, mas isso vamos vendo com o tempo hehehehe…
Apesar de não ter testado aqui, gostei muito de saber o quão versátil é o vim.
Meus parabéns.
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 …
Elcio e suas bruxarias, eheh…
Segui os passos aqui também, já que é comum eu ter de usar o vim…
Abraços.
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…
Otimo post!
Procuro sempre conhecer cada vez mais o Vim e a cada post que eu encontro me surpreendo cada vez mais com o editor.
Ótimo post Elcio!
Consegui fazer funcionar aqui, ficou perfeito!
Tem mais alguma sugestão de comandos? fora as tabelas e listas?