Passa alla riga successiva senza pari con vimdiff


8

C'è un modo per passare alla riga successiva senza pari con in vimdiff? Non "passa alla riga successiva modificata", ma passa alla riga successiva non corrispondente per il file corrente.

Nel mio caso sto cercando di confrontare due file di grandi dimensioni, uno dei quali dovrebbe essere praticamente un sottoinsieme dell'altro. Quello che voglio fare è vedere se ci sono righe nel file più piccolo che mancano nel file più grande. Ho pensato che avrei dovuto essere in grado di posizionare il cursore nel file più grande, quindi passare direttamente all'annotazione di riga "mancante" successiva.


Accade solo che i file attuali in questione siano ordinati, quindi probabilmente posso usare l'utilità della riga di comando "comm" per trovare le righe mancanti, ma mi chiedevo se esiste un modo semplice per farlo in Vimdiff, in particolare se le righe non sono ordinati.


Cosa sono esattamente le linee senza eguali? Linee, che vengono aggiunte sull'altro buffer?
Christian Brabandt,

@ChristianBrabandt Sì. Linee che si trovano in un file (buffer) che non si trovano nell'altro file (buffer).
RM,

e vuoi passare alle righe aggiunte nell'altro buffer? (non puoi spostarti in cima alle linee di riempimento cancellate)
Christian Brabandt,

Risposte:


2

Se capisco correttamente cosa vuoi e vuoi trovare quelle righe, che sono uniche in un buffer e quindi contrassegnate come "DiffAdd" nell'altro buffer.

Sfortunatamente, non esiste un modo nativo per farlo utilizzando la search()funzione, quindi è necessario aggirarlo con la seguente funzione, che funziona cercando una linea, che ha l'evidenziazione "DiffAdd".

function! NextChange()
    while search('^.*', 'w') > 0
        if synIDattr(diff_hlID(line('.'),col('.')), 'name') is# 'DiffAdd'
            break
        endif
    endwhile
endfunction
com! NextChange :call NextChange()

Funziona anche per rimozioni e modifiche?
Tom Hale,

Potrebbe essere necessario cercare anche l'evidenziazione di 'DiffChange'
Christian Brabandt,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.