Ich benutze vim als meinen primären Editor.
Ich würde auch gerne vim verwenden, um Dateien zu diffieren und zu modifizieren, während ich den Diff mache, um einfache Änderungen zu korrigieren (anstelle der meisten Diff-Techniken, die ein Zyklus aus diff / fix / diff / fix sind).
Darüber hinaus gibt es einfache Möglichkeiten, vim in Diff-Tools zu integrieren, die von Tools / Sites für die Quellcodeverwaltung verwendet werden (ich denke speziell an git, aber ich bin sicher, dass andere Leute an der Integration mit anderen Tools / Sites für die Quellcodeverwaltung interessiert sind).
:Gdiff
und mit:Gvdiff
beiden Befehlen können Sie den Nebeneinanderunterschied des aktuellen Puffers sehen, wenn Ihr aktueller Puffer von git verwaltet wird. Es hilft Ihnen auch, Konflikte in einem Layout mit drei Fenstern zu lösen, wenn Sie Konflikte in einigen Dateien zusammenführenvd () { diff $@ > /dev/null ; if [[ $? -eq 1 ]] ; then ; vimdiff -c 'windo set syntax=off' $@ ; fi ; }
und rufe sie mit aufvd file1 file2
. Es wird verwendet,diff
um festzustellen, ob sich die Dateien unterscheiden, und wird nur dann geöffnet,vimdiff
wenn dies der Fall ist. Ansonsten bleibe ich in der Shell. Ich deaktiviere auch die Syntaxhervorhebung in Vim, da ich sie beim Vergleichen als störend empfinde. Funktioniert nur mit zwei Dateien.Antworten:
In vim ist diese Funktionalität integriert (mit dem richtigen Befehlszeilen-Flag).
Dadurch wird jede Datei in einer Ansicht geöffnet und die Unterschiede werden hervorgehoben.
Jeder identische Code ist
folded
nicht mehr vorhanden, sodass Sie nicht den identischen Code anzeigen oder durch große Teile des identischen Codes scrollen müssen.Es gibt aber auch eine Wrapper-Anwendung
vimdiff
, die vim korrekt mit den richtigen Flags aufruft.Wenn Sie Git verwenden, können Sie ein externes Diff-Tool einrichten. So ist es einfach, vimdiff als Diff-Tool für Git einzurichten.
Bei Verwendung von vimdiff können Sie beide Seiten bearbeiten und die Diff-Hervorhebung hält Schritt, um die Unterschiede anzuzeigen.
Hinweis: Beim Bearbeiten von einem Git Diff. Wenn Sie versuchen, die im Repository gespeicherte Version der Datei zu bearbeiten, werden Ihre Änderungen beim Beenden verworfen (git vertraut Ihnen nicht mit dem Original, sodass Sie sich von einer tmp-Kopie unterscheiden), aber Sie können die lokale Kopie nach Herzenslust und nach Belieben bearbeiten Speichern Sie es über Ihre aktuelle Version.
Einige grundlegende Befehle, die in nützlich sind
vimdiff
Andere vim-Einstellungen, die ich verwende, um mit vimdiff mit Highliting zu arbeiten
Dadurch wird die Hervorhebung der geänderten Codebits deaktiviert. Daher wird die geänderte Zeile hervorgehoben, damit ich die Änderungen erkennen kann. Der tatsächlich geänderte Text wird jedoch in der Zeile hervorgehoben (da er nicht hervorgehoben ist).
quelle
:diffthis
Befehl auch verwenden , um ein Diff zu starten, wenn Vim bereits ausgeführt wird.git config --global diff.tool vimdiff
,git diff
zeigt immer noch alles wie wenn ich nichts ändern.git difftool
Wenn Sie eine geöffnete Datei bearbeiten und mit einer anderen Datei vergleichen möchten, ohne die aktuelle zu schließen:
Öffnen Sie die neue Datei im geteilten Bildschirm:
Bei vertikaler Teilung:
oder horizontale Teilung:
Cursor auf anderen geteilten Bildschirm umschalten:
Rufe "diff mode" in der Datei auf:
Wechseln Sie zu einer anderen Datei und rufen Sie den "Diff-Modus" auf:
So deaktivieren Sie den Diff-Modus:
quelle
:windo diffthis
auchSie können die unten angegebene Einstellung in die
.gitconfig
Datei im%homepath%
(oder%userprofile%
) Verzeichnis des aktuell angemeldeten Benutzers einfügen:Dadurch kann das Git-Bash-Tool Vimdiff auch als externes Diff-Tool verwenden.
quelle
Folgendes ist meine Git-Konfiguration:
https://github.com/tracyone/dotfiles/blob/master/.gitconfig
quelle
Ich kann nur drei Situationen erkennen, in denen vim als Diffe-Tool verwendet wird. Sie werden im Folgenden kurz beschrieben:
Geben Sie für git difftool Folgendes ein
~/.gitconfig
:Um vim als Diff-Tool für zwei Dateien zu öffnen, können Sie Folgendes tun:
Um eine Diff-Ansicht für die derzeit aktiven Puffer zu erhalten, dh für alle Puffer, denen auf der derzeit aktiven Registerkarte ein Fenster zugewiesen ist, haben Sie folgende Möglichkeiten:
Weitere Informationen finden Sie unter
:h diff
quelle
Folgendes mache ich:
:vnew
(um beide Fenster nebeneinander anzuzeigen) oder:new
(um die Fenster oben und unten anzuzeigen). Wenn Sie eine bestimmte Datei im zweiten Fenster öffnen möchten, können Sie den folgenden Pfad angeben::vnew /path/to/secondfile.txt
Hier ist die benutzerdefinierte Funktion, die in meinem ist
~/.vimrc
:quelle
:diffthis
unddiffoff!
müssen nicht alle Diff-Optionen selbst festlegen (z. B. wird Cursorbind auch von DiffMode festgelegt)