Gehen Sie mit vimdiff zur nächsten nicht übereinstimmenden Zeile

8

Gibt es eine Möglichkeit, mit in vimdiff zur nächsten nicht übereinstimmenden Zeile zu wechseln? Nicht "Zur nächsten geänderten Zeile wechseln", sondern zur nächsten nicht übereinstimmenden Zeile für die aktuelle Datei.

In meinem Fall versuche ich, zwei große Dateien zu vergleichen, von denen eine praktisch eine Teilmenge der anderen sein sollte. Ich möchte sehen, ob in der kleineren Datei Zeilen vorhanden sind, die in der größeren Datei fehlen. Ich dachte, ich sollte meinen Cursor in der größeren Datei platzieren und dann direkt zur nächsten "fehlenden" Zeilenanmerkung springen können.


Es kommt einfach so vor, dass die fraglichen aktuellen Dateien sortiert sind, sodass ich wahrscheinlich das Befehlszeilenprogramm "comm" verwenden kann, um die fehlenden Zeilen zu finden, aber ich habe mich gefragt, ob es eine einfache Möglichkeit gibt, dies in vimdiff zu tun, insbesondere wenn die Zeilen sind nicht sortiert.

RM
quelle
Was genau sind unübertroffene Linien? Zeilen, die auf dem anderen Puffer hinzugefügt werden?
Christian Brabandt
@ChristianBrabandt Ja. Zeilen in einer Datei (Puffer), die sich nicht in der anderen Datei (Puffer) befinden.
RM
und Sie möchten zu den hinzugefügten Zeilen im anderen Puffer wechseln? (Sie können nicht über die gelöschten Füllzeilen gehen)
Christian Brabandt

Antworten:

2

Wenn ich richtig verstehe, was Sie wollen und Sie diese Zeilen finden wollen, sind diese in einem Puffer eindeutig und daher im anderen Puffer als "DiffAdd" markiert.

Leider gibt es keine native Möglichkeit, dies mit der search()Funktion zu tun. Daher müssen Sie sie mit der folgenden Funktion umgehen, indem Sie nach einer Zeile suchen, die die Hervorhebung "DiffAdd" aufweist.

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
quelle
Funktioniert dies auch für Umzüge und Änderungen?
Tom Hale
Möglicherweise müssen Sie auch nach 'DiffChange'-Hervorhebungen suchen
Christian Brabandt