Blog do TaQ

Publicando seu código colorido com o Vim

Publicado em Developer

Rapaz, o Vim é uma ferramenta que quanto mais a gente usa mais a gente descobre recursos. Eu uso ele faz muito tempo e só agora fui saber do comando :TOhtml (apesar que me parece que antes do Vim7 ele era um plugin), que converte o conteúdo do arquivo corrente em HTML, usando as cores correntes do syntax highlight. Isso é muito útil para publicar código mais "bonitinho" do que somente o tradicional monocromático (que eu estava usando por aqui até agora).

Aqui tem uma dica legal sobre como fazer isso, mas basicamente a coisa funciona assim:

  1. Abra o seu arquivo-fonte;
  2. Selecione o esquema de cores que você quer usar para publicar - vou mostrar com um que eu fiz, o TaQua, e com o Vibrantink, que estou usando bastante agora também, use :colo <esquema>;
  3. Ajuste algumas opções de acordo com a sua escolha para publicar o código - por exemplo, se você quiser omitir os números das linhas, que eu mantenho por padrão, digite :set nonumber, e se quiser que o Vim gere CSS ao invés de inserir todo o código HTML para cada esquema de cor em cada elemento, utilize :let html_use_css=1. Isso vai gerar menos código e ficar mais bem feito, mas lembre-se de copiar o CSS junto com o código.
  4. Digite :TOhtml e obtenha um split na janela corrente com um arquivo de mesmo nome do corrente com .html no final. Copie e publique a parte do seu código (e opcionalmente o CSS se você utilizou a opção mencionada acima).

Exemplos de código convertido dessa maneira, primeiro com o TaQua, usando CSS (dê uma olhada no código aqui da página para ver):

# classe igual está no livro
class Carro
   def initialize(marca,modelo,cor,tanque)
      @marca = marca
      @modelo   = modelo
      @cor      = cor
      @tanque   = tanque
   end
end

# criando um carro novo aqui ...
gol = Carro.new("Volkswagen","Gol",:azul,50)
puts gol

# classe e carro refatorados! ei, eu comprei um novo né
CarroRefatorado = Struct.new(:marca,:modelo,:cor,:tanque)
corsa = CarroRefatorado.new("Chevrolet","Corsa Hatch",:preto,50)
puts corsa

Agora com o vibrantink, usando as tags HTML sem CSS:

# classe igual está no livro
class Carro
   def initialize(marca,modelo,cor,tanque)
      @marca = marca
      @modelo   = modelo
      @cor      = cor
      @tanque   = tanque
   end
end

# criando um carro novo aqui ...
gol = Carro.new("Volkswagen","Gol",:azul,50)
puts gol

# classe e carro refatorados! ei, eu comprei um novo né
CarroRefatorado = Struct.new(:marca,:modelo,:cor,:tanque)
corsa = CarroRefatorado.new("Chevrolet","Corsa Hatch",:preto,50)
puts corsa

Tags:


Comentários

comments powered by Disqus

Twitter