Mover a la siguiente línea no coincidente con vimdiff

8

¿Hay alguna manera de pasar a la siguiente línea no coincidente con en vimdiff? No "pasar a la siguiente línea cambiada", sino pasar a la siguiente línea no coincidente para el archivo actual.

En mi caso, estoy tratando de comparar dos archivos grandes, uno de los cuales debería ser prácticamente un subconjunto del otro. Lo que quiero hacer es ver si hay líneas en el archivo más pequeño que faltan en el archivo más grande. Pensé que debería poder colocar mi cursor en el archivo más grande y luego saltar directamente a la siguiente anotación de línea "faltante".


Sucede que los archivos actuales en cuestión están ordenados, por lo que probablemente pueda usar la utilidad de línea de comandos "comm" para encontrar las líneas que faltan, pero me preguntaba si hay una manera fácil de hacerlo en vimdiff, particularmente si las líneas No están ordenados.

RM
fuente
¿Qué son exactamente las líneas no coincidentes? Líneas, que se agregan en el otro búfer?
Christian Brabandt
@ChristianBrabandt Sí. Líneas que están en un archivo (buffer) que no están en el otro archivo (buffer).
RM
y quieres pasar a las líneas agregadas en el otro búfer? (no puede moverse sobre las líneas de relleno eliminadas)
Christian Brabandt

Respuestas:

2

Si entiendo correctamente lo que quiere y desea encontrar esas líneas, que son únicas en un búfer y, por lo tanto, están marcadas como "DiffAdd" en el otro búfer.

Desafortunadamente, no hay una forma nativa de hacerlo usando la search()función, por lo tanto, debe solucionarlo con la siguiente función, que funciona buscando una línea, que tiene el resaltado "DiffAdd".

function! NextChange()
    while search('^.*', 'w') > 0
        if synIDattr(diff_hlID(line('.'),col('.')), 'name') is# 'DiffAdd'
            break
        endif
    endwhile
endfunction
com! NextChange :call NextChange()
Christian Brabandt
fuente
¿Funciona esto también para mudanzas y cambios?
Tom Hale
Es posible que también necesite buscar el resaltado 'DiffChange'
Christian Brabandt