Porównywanie dwóch plików w Vimie

63

Czy w Vimie można oglądać dwa pliki obok siebie? Jeśli tak, w jaki sposób mogę skonfigurować mój edytor, aby to zrobić i czy istnieje sposób na przejście diffmiędzy dwoma plikami w Vimie?

Mam świadomość poleceń :nexti :prev, ale nie o to mi chodzi. Naprawdę miło byłoby oglądać oba pliki w tandemie.

Zaid
źródło

Odpowiedzi:

43

Otwórz widok obok siebie:

Ctrl+w v

Zmień między nimi:

Ctrl+w h or l

Checkout Vimdiff polecenie, część pakietu vim, jeśli chcesz mieć widok Diff-jak:

vimdiff file1.txt file2.txt
maxschlepzig
źródło
2
Czy istnieje sposób na zablokowanie przewijania między dwoma oknami?
Zaid
1
Tak, sprawdź vimdoc.sourceforge.net/htmldoc/options.html#%27scrollbind%27 - w przypadku vimdiff jest to ustawienie domyślne.
maxschlepzig
1
Zwykle używam „diff file1 file2” w wierszu poleceń.
djangofan
2
@Zaid Use vimdiff file1.txt file2.txt(patrz poniżej)
Eduardo Cuomo
42

Możesz także otworzyć vima w trybie podzielonego ekranu, z -Oopcją: -

vim -O file1 [file2 ...]

Aby następnie włączyć tryb różnicowy, musisz uruchomić :diffthispolecenie w każdym okienku.

Innym scenariuszem jest użycie jednego pliku w vimie i chcesz go otworzyć i porównać z innym. Następnie możesz użyć następujących poleceń vim: -

: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)

Następnie możesz wyłączyć tryb różnicowy w każdym panelu za pomocą polecenia vim :diffoff.

EDYCJA
I drugi standardowy, o którym nie wspomniano: -

vim -d file1 [file2 ...]

Jest to równoważne z vimdiffbezpośrednim dzwonieniem .

Alex Leach
źródło
11
:windo :diffthismożna użyć zamiast trzech ostatnich poleceń.
Bernhard
2

Lub po prostu otwórz pierwszy plik w VIM, a następnie :vert diffsplit file2 :vertspowoduje podzielenie ekranu w pionie.

diffsplit robi różnicę, dzieli pliki i przewija je blokuje.

Dustin
źródło