Weź różnicę dwóch pionowo otwartych okien w Vimie

103

Mam otwarte dwa pliki. Są otwierane w trybie pionowym obok następnego. Czy mogę natychmiast porównać te dwa pliki bez wychodzenia lub zamykania Vima?

Fatih Arslan
źródło

Odpowiedzi:

154

Aby rozpocząć różnicowanie we wszystkich widocznych oknach:

:windo diffthis

który jest wykonywany :diffthisw każdym oknie.

Aby zakończyć tryb porównywania:

:diffoff!

( !Marki diffoffdotyczą wszystkich okien bieżącej karty - byłoby miło, gdyby diffthismiały tę samą funkcję, ale tak nie jest).

Nefrubyr
źródło
:windoKomenda sprawia, że nawet lepiej. Dzięki. Zmapuję to, żeby było łatwiej.
Fatih Arslan
1
To dobra odpowiedź, ale pamiętaj, że okno minibufexplorer powinno zostać zamknięte przed tą operacją, jeśli zostanie otwarte. W przeciwnym razie diff pokazuje nieprawidłowe wyniki.
baldrs
Można użyć aliasu :windo difft[this]. Ref::help diff
DmitrySandalov
@FatihArslan,: windo diffthis w moim przypadku nic nie robi, ale po prostu zostawiając po lewej stronie szarą kolumnę obok numerów linii. Mam otwarte dwa różne pliki Vima.
earik87
22

w każdym z okien, które chcesz porównać, wpisz:

:diffthis

Jeśli chcesz porównać wszystkie otwarte okna, możesz zrobić:

:windo diffthis

( windozastosuje polecenie do wszystkich otwartych okien)

Nathan Fellman
źródło
7

Kontynuując wcześniejsze odpowiedzi,

  • :windo difft(skrót od diffthis) uruchomi tryb porównywania we wszystkich otwartych oknach.
  • :windo diffo(skrót od diffoff) zatrzyma tryb porównywania we wszystkich otwartych oknach.

Mam następujące mapowania, vimrcaby to ułatwić:

command! Difft windo diffthis
command! Diffo windo diffoff
cxw
źródło
3

Idąc za wcześniejszymi odpowiedziami dostosowałem mapowanie dostarczone przez @cxw Poniższe mapowanie automatycznie zamyka NERDTree i porównuje otwarte okna. Nie ma znaczenia, czy NERDTree jest blisko, działa w ten sam sposób. Robię to dość często, więc zaoszczędziło mi to sporo czasu.

command! Difft NERDTreeClose | windo diffthis
Jordi Freixa
źródło