Wie kann man Diff-Abschnitte in Vimdiff erweitern / reduzieren?

295

Ich habe heute angefangen, vimdiff zu verwenden, und wollte einige der Dinge tun, die ich für Windows-basierte Diff-Editoren als selbstverständlich angesehen habe (z. B. einen Diff-Abschnitt erweitern / reduzieren, eine vollständige Dateierweiterung haben / nur Unterschiede mit 3 Kontextzeilen über oder unten usw.). Ich kenne derzeit nur die folgenden Befehle:

Tastatürkürzel:

  • do - Änderungen aus einem anderen Fenster in das aktuelle Fenster übernehmen.

  • dp - Übertragen Sie die Änderungen aus dem aktuellen Fenster in das andere Fenster.

  • ]c - Zur nächsten Änderung springen.

  • [c - Zur vorherigen Änderung springen.

  • CTRL+ W, w- Wechseln Sie in das andere geteilte Fenster ( CTRL+ W, CTRL+ Wmacht dasselbe, falls Sie die CTRLTaste etwas später loslassen )

Könnte mich jemand in die richtige Richtung weisen, damit ich ähnliche Funktionen replizieren kann?

Es wäre schön, wenn ich zum Beispiel Linien um die Diffs erweitern / reduzieren könnte.

TCSGrad
quelle
2
Eine Verknüpfung zum Hinzufügen / Zurücksetzen einer langen Liste von Änderungen finden Sie unter stackoverflow.com/q/6093746/212942
TCSGrad
1
Es ist amüsant zu sehen, dass die Frage nach mehr als 4 Jahren geschlossen wird. Es sind die Top 3 Beiträge, wenn 'vimdiff' gegoogelt wird!
TCSGrad

Antworten:

241

Abgesehen von den von Ihnen erwähnten verwende ich nur häufig, wenn ich Folgendes unterscheide:

  • :diffupdate :diffu-> Berechnen Sie das Diff neu. Dies ist nützlich, wenn vim nach mehreren Änderungen keine minimalen Änderungen mehr anzeigt. Beachten Sie, dass dies nur funktioniert, wenn die Dateien in vimdiff geändert wurden. Andernfalls verwenden Sie:
    • :e um die Dateien neu zu laden, wenn sie außerhalb von vimdiff geändert wurden.
  • :set noscrollbind-> Deaktivieren Sie vorübergehend das gleichzeitige Scrollen in beiden Puffern, aktivieren Sie es erneut :set scrollbindund scrollen Sie.

Das meiste, wonach Sie gefragt haben, ist das Falten: das Kapitel über das Falten im vim-Benutzerhandbuch . Außerhalb von Unterschieden benutze ich manchmal:

  • zo -> offene Falte.
  • zc -> Falte schließen.

Aber Sie werden wahrscheinlich besser bedient sein von:

  • zr -> Faltstufe reduzieren.
  • zm -> bitte noch eine Faltstufe.

oder auch:

  • zR -> Reduziere die Faltung komplett, sagte ich!.
  • zM -> Falte die meisten!.

Das andere, wonach Sie gefragt haben, verwenden Sie n Faltlinien. Weitere Informationen finden Sie im Abschnitt zum vim-Referenzhandbuch zu Optionen über den Abschnitt zu diff :

  • set diffopt=<TAB>, dann aktualisieren oder hinzufügen context:n.

Sie sollten sich auch den Abschnitt mit der Bedienungsanleitung zu diff ansehen .

Ninjalj
quelle
Sehr umfangreich !! Ich würde die Links überprüfen, die Sie gesagt haben, aber die Frage noch ein paar Tage offen halten, um zu sehen, ob ich mehr Antworten bekomme (ich habe an einem Wochenende gepostet, und dann wären nicht viele Leute aktiv).
TCSGrad
Wissen Sie übrigens, ob vimdiff zum Zusammenführen / 3-Wege-Auflösen usw. verwendet werden kann? Dann wäre es wirklich toll !!
TCSGrad
1
@ shan23 Überprüfen Sie dies für das 3-Wege-Zusammenführen (für Git) . Es gibt dort auch Kommentare zu svn. Ich versuche immer noch, die Befehle herauszufinden, wenn Sie 4 Puffer haben (do / dp funktioniert nicht).
Quornian
Damit :set noscrollbindes wirksam wird, muss es auch verwendet werden :set nocursorbind, was nicht die Standardeinstellung ist. Daher müssen beide Optionen angepasst werden.
blutiger
4

Stellen Sie vimdiff so ein, dass Groß- und Kleinschreibung ignoriert wird

Nachdem ich mit vim diff angefangen habe

 gvim -d main.sql backup.sql &

Ich finde, dass ärgerlicherweise eine Datei MySQL-Schlüsselwörter in Kleinbuchstaben enthält, während die andere in Großbuchstaben Unterschiede in praktisch jeder zweiten Zeile zeigt

:set diffopt+=icase

Dadurch wird der Bildschirm dynamisch aktualisiert und Sie können ihn genauso einfach wieder ausschalten

zzapper
quelle
Obwohl dies ein netter Tipp ist, sehe ich nicht, wie er mit der vorliegenden Frage zusammenhängt (wie man Diff-Abschnitte in vimdiff erweitert und reduziert).
Paul Stelian
3

Wenn Sie dies tun Ctrl+W W, müssen Sie dieses Extra nicht hinzufügen Ctrl. Macht das Gleiche.

tubbo
quelle
14
Ich finde ^ W ^ W viel schneller zu tippen als ^ W w.
Hobbs
Ich
0

Strg + w, w kann wie erwähnt zum Navigieren von Fenster zu Fenster verwendet werden.

Jetzt können Sie eine bestimmte Änderung alleine auswählen und wie folgt in den anderen Bereich einfügen. Hier gebe ich ein Beispiel, als ob ich meinen Code von Bereich 1 in Bereich 2 ändern wollte, und derzeit befindet sich mein Cursor in Bereich 1

  • Verwenden Sie Umschalt-v, um eine Zeile hervorzuheben, und wählen Sie mit den Aufwärts- oder Abwärts-Tasten den gewünschten Code aus. Fahren Sie mit Schritt 3 fort, um Ihre Änderungen in den anderen Bereich einzufügen.

  • Verwenden Sie den visuellen Modus und ändern Sie ihn dann

    1 Klicken Sie auf "v", um in den visuellen Modus zu gelangen. 2 Wählen Sie mit der Auf- oder Ab-Taste den gewünschten Code aus. 3 Klicken Sie auf "Esc". Escape-Taste. 4 Verwenden Sie nun "yy" zum Kopieren oder "dd", um die Änderung zu schneiden. 5 do ' Strg + W, W ', um zu Bereich 2 zu navigieren. 6 Klicken Sie auf' P ', um Ihre Änderung an der gewünschten Stelle einzufügen

Pratheusha KK
quelle
1
Die Gesamtheit dessen, was Sie angegeben haben (mit Ausnahme der ersten Zeile), ist ein Merkmal von vim selbst, nicht vimdiff per say.
TCSGrad