Diff zwei Tabs in Vim


121

Szenario: Ich habe Vim geöffnet und Text eingefügt. Ich öffne eine zweite Registerkarte mit :tabeund füge dort einen anderen Text ein.

Ziel: Ich möchte eine dritte Registerkarte mit einer Ausgabe, die dem Schreiben beider Texte in Dateien und dem Öffnen mit entspricht vimdiff.

Der nächste, den ich finden kann, ist "Diff den aktuellen Puffer gegen eine Datei", aber nicht diffzwei offene, aber nicht gespeicherte Puffer.


1
Was ist der Tabe-Befehl?
Hhafez

1
@hhafez - öffne einen neuen Puffer in einem neuen Tab
Rook

3
Es ist die Abkürzung für: tabedit, auch bekannt als: tabnew.
TSomKes

Antworten:


188

Ich schlage vor, die zweite Datei auf derselben Registerkarte anstelle einer neuen zu öffnen.

Folgendes mache ich normalerweise:

:edit file1
:diffthis
:vnew
:edit file2
:diffthis

Der :vnewBefehl teilt die aktuelle Ansicht vertikal auf, sodass Sie dort die zweite Datei öffnen können. Der Befehl :diffthis(oder kurz :difft:) wird dann auf jede Ansicht angewendet.


1
Fwiw, MacVim scheint dies nicht standardmäßig zu haben, aber ich denke, Sie sollten in der Lage sein, zum Terminal zu gehen und zu tippen vimdiff file1.txt file2.txtund sich selbst auszuschalten.
Ruffin

11
Du hast mich einfach umgehauen. Mein Leben wird danach nie mehr das gleiche sein :diffthis. Ich danke dir sehr. Danke dir!
Justin Force

3
Das ist großartig. Die edit fileNTeile können durch einfaches Einfügen aus dem Puffer ersetzt werden, wodurch Sie zwei Textblöcke unterscheiden können, ohne sie jeweils in eine tmp-Datei einzufügen (etwas, das Sie verschmelzen können, aber visuelle Diff-Tools auf dem Mac fehlen). In MacVim hat es sofort funktioniert.
Yshavit

38

Ich würde vorschlagen, Folgendes zu versuchen : diffthis oder : diffsplit


10
:vert diffsplitsorgt für eine traditionellere Diff-Ansicht als ohne:vert
Ephemient

7
Sie können: diffopt + = vertikal setzen, um: vert als Standard festzulegen.
Graywh

3
Außerdem können Sie zwei Fenster gleichzeitig scrollen: :set scrollbindin beiden.
Dmytro Sirenko

Funktioniert nicht, wenn ich Tabs haben muss, wie in der Frage gestellt. Wenn ich das tue, :diffsplitbekomme ich zwei verbundene Puffer.
Erik

25

Wenn Sie zwei Dateien in vertikaler Aufteilung geöffnet haben, führen Sie sie aus

:windo diffthis


8
Verwenden Sie :diffoff, um den Diff-Modus auszuschalten
AB

2
Aber wie wechsle ich von zwei Registerkarten zu einer vertikalen Aufteilung?
Erik

1

Der Inhalt aller Registerkarten befindet sich in den Puffern. Schauen Sie sich die Puffer an:

:buffers

Suchen Sie die richtige Nummer für den Inhalt, die sich von Ihrem aktuellen Tab-Inhalt unterscheiden soll.

Öffnen Sie den Puffer in Ihrer aktuellen Registerkarte (z. B. Puffer Nummer 4).

:sb 4

Oder für die vertikale Ansicht:

:vertical sb 4

Dann können Sie den Inhalt einfach mit unterscheiden

:windo diffthis

Wenn Sie die Diff-Analyse abgeschlossen haben, können Sie Folgendes eingeben:

:windo diffoff
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.