2011-01-20 13 views
7

Existe la posibilidad en el VIM de repetir la función "Ejecutar y actualizar '# =>' Marcadores" TextMate para el código ruby."Ejecutar y actualizar '# =>' Marcadores" para VIM

Me gustaría tener algo como:

x = 2 
class A 
    def a 
    42 
    end 
end 

x # => 
A.new.a # => 

Introduzca alguna orden ... y obtener

x = 2 
class A 
    def a 
    42 
    end 
end 

x # => 2 
A.new.a # => 42 

Aquí es una descripción de esta función desde Ciarán Walsh’s Blog:

Otra herramienta que definitivamente vale la pena saber es la "Ejecutar y actualizar '# =>' Mark comando ers "(en ^⇧⌘E por defecto). Para usarlo, añadir algunas marcas de comentario (hay un fragmento en # ⇥ que insertar estos para usted) hasta el final de líneas que le gustaría ver los resultados de y luego activar el comando . TextMate ejecutará su código e informará el resultado de la línea marcada en línea en los comentarios. Esta característica es ideal para código publicado en línea ya que muestra la fuente y los resultados juntos.

Respuesta

1

Parece que no debería ser demasiado difícil escribir esto como una función Vim. Pruebe esto:

function! ExecuteAndUpdate() 
    ruby << EOF 
     marker = '# =>' 
     buf = VIM::Buffer.current 
     lines = File.readlines(buf.name) 

     bnd = binding 
     eval(lines.join("\n"), bnd) 

     lines.each_with_index do |line, i| 
      if line.match(/#{marker}/) 
       result = marker + ' ' + eval(line, bnd).inspect 
       buf[i+1] = line.sub(/#{marker}.*/, result).chomp 
      end 
     end 
EOF 
endfunction 

Then :call ExecuteAndUpdate().

Una limitación es que evalúa cada línea con un marcador dos veces. Entonces, las líneas con marcadores no deberían tener efectos secundarios.

+0

Sí, esa sería otra limitación, supongo. –

Cuestiones relacionadas