Zwei Dateien in Vim vergleichen

63

Ist es möglich, zwei Dateien nebeneinander in Vim anzuzeigen? Wenn ja, wie kann ich meinen Editor dafür einrichten und gibt es eine Möglichkeit, diffzwischen den beiden Dateien in Vim zu wechseln?

Mir sind die Befehle :nextund bewusst :prev, aber das ist nicht das, wonach ich suche. Es wäre wirklich schön, die beiden Dateien im Tandem anzusehen.

Zaid
quelle

Antworten:

43

Öffnen Sie die Seitenansicht:

Ctrl+w v

Wechseln Sie zwischen ihnen:

Ctrl+w h or l

Überprüfen Sie den vimdiff- Befehl, der Teil des vim-Pakets ist, wenn Sie eine diff-ähnliche Ansicht wünschen:

vimdiff file1.txt file2.txt
maxschlepzig
quelle
2
Gibt es eine Möglichkeit, das Scrollen zwischen den beiden Fenstern zu sperren?
Zaid
1
Ja, sehen Sie sich vimdoc.sourceforge.net/htmldoc/options.html#%27scrollbind%27 an - bei vimdiff ist dies die Standardeinstellung.
Maxschlepzig
1
Normalerweise benutze ich "diff file1 file2" in der Kommandozeile.
Djangofan
2
@ Zaid Use vimdiff file1.txt file2.txt(siehe unten)
Eduardo Cuomo
42

Sie können vim auch im geteilten Bildschirmmodus öffnen, mit der -OOption: -

vim -O file1 [file2 ...]

Um den Diff-Modus zu aktivieren, müssen Sie den :diffthisBefehl in jedem Bereich ausführen.

Ein weiteres Anwendungsszenario ist, wenn Sie bereits eine Datei in vim geöffnet haben und diese öffnen und mit einer anderen vergleichen möchten. Dann können Sie die folgenden vim-Befehle verwenden:

:vs otherfile (open otherfile in vertical split screen)
:diffthis (turn on diff mode in original file)
Ctrl+w l  (swap to newly opened file)
:diffthis (turn on diff mode in opened file)

Anschließend können Sie den Diff-Modus in jedem Bereich mit dem Befehl vim deaktivieren :diffoff.

EDIT
Und der andere Standard, der nicht erwähnt wurde: -

vim -d file1 [file2 ...]

Dies entspricht einem vimdiffdirekten Anruf .

Alex Leach
quelle
11
:windo :diffthiskann anstelle der letzten drei Befehle verwendet werden.
Bernhard
2

Oder öffnen Sie einfach die erste Datei in VIM und :vert diffsplit file2 :vertteilen Sie den Bildschirm vertikal auf.

diffsplit Führt ein Diff aus und teilt die Dateien und scrollt, um sie zu sperren.

Dustin
quelle