obtener salida del comando en un búfer vim

4

lo que quiero hacer

  1. editando un archivo
  2. ejecute '! svn diff%' (o cualquier otro comando que tome el nombre del archivo actual )
  3. poner la salida en un nuevo búfer (o pestaña)

bono: no uso un script, ya que trabajo a menudo en hosts que no logro a mi gusto.

Mi primer intento fue: :tabnew | r !svn diff %lo obvio no funciona porque% estará vacío ya que se analiza después del comando tabnew.

gcb
fuente

Respuestas:

7

Esto debería funcionar:

:tabnew | r !svn diff #

#hace referencia al búfer anterior, es decir, el búfer que tenía abierto antes de que :tabnewse ejecutara.

Aún mejor es

:tabnew | set buftype=nowrite | r !svn diff #

porque entonces vim no se quejará cuando cierre la pestaña, pero esto ya es demasiado para escribir cada vez.

daniel kullmann
fuente
¡Este es un patrón realmente poderoso! Ojalá supiera sobre ese comando de tubería antes.
AlexMA