2009-05-15 7 views
7

Estoy tratando de aprender a usar vimdiff bien. Actualmente descubrí cómo obtener un bloque de diff de un buffer a otro (usando do) pero lo que estoy dispuesto a hacer ahora es simplemente obtener una (o alguna) línea de un bloque en el otro buffer.Usando diffget en vimdiff

La documentación vimdiff dice:

:[range]diffget 

pero no puedo imaginar cómo tener un parámetro de rango correcto simplemente copiar la línea Estoy en un buffer de la otra.

Respuesta

9

Puede utilizar

:.,. 

como la gama de la línea actual a la línea actual.

De acuerdo con el documento, puede omitir el rango y luego se utilizará la línea o línea anterior.

+3

sin rango, copia todo el bloque de diferencia, no solo la línea actual. – claf

+3

No necesita ', .', simplemente' .' debería ser suficiente. – ZyX

0

Como dijo Mykola,:.,. especificará "la línea actual" como el rango.

Tenía un archivo muy grande que necesitaba cada línea inspeccionada y tal vez cambiada, por lo que escribir ":.,. Diffput" cada vez era demasiado arduo. He grabado una macro:

qq:.,.diffput[ENTER]q 

Eso crea una macro (guardado en la tecla "q") de "poner" una sola línea de la memoria intermedia izquierda en el búfer de la derecha. Ahora que repetir esta acción, todo lo que tengo que hacer es escribir "@q"

1

Me resulta un poco más fácil para seleccionar la línea actual con V y luego a hacer o dp. Esto tiene el mismo efecto que seleccionar la ira con :.,. pero es más fácil escribir! Además, puede agregar fácilmente líneas adyacentes con j o k.

Cuestiones relacionadas