Jak rozwinąć / zwinąć sekcje diff w Vimdiff?

Zacząłem używać vimdiff dzisiaj i chciałem zrobić kilka rzeczy, które brałem za pewnik w edytorach diff opartych na systemie Windows (jak Rozwiń / Zwiń sekcję diff, mieć pełne rozszerzenie pliku / tylko diffy z 3 liniami kontekstu powyżej lub poniżej, itp.). Obecnie znam tylko następujące komendy:

Skróty Klawiaturowe:

  • do - pobiera zmiany z innego okna do bieżącego okna.

  • dp - Umieść zmiany z bieżącego okna do drugiego okna.

  • ]c - przejdź do następnej zmiany.

  • [c - przejdź do poprzedniej zmiany.

  • CTRL+W, w - Przełącz na inne okno dzielone (CTRL+W, CTRL+w robi to samo rzecz, w przypadku, gdy puścisz klawisz CTRL nieco później)

Czy ktoś mógłby wskazać mi właściwy kierunek, abym Czy Można replikować podobne funkcje?

Byłoby miło, gdybym mógł rozwinąć / zwijać linie wokół diffów, na przykład.

Author: Lyes CHIOUKH, 2011-03-13

4 answers

Oprócz tych, które wymieniasz, używam tylko często, gdy różnimy następujące:

  • :diffupdate :diffu -> Przelicz ponownie różnicę, przydatne, gdy po dokonaniu kilku zmian vim nie pokazuje już minimalnych zmian. Zauważ, że działa tylko wtedy, gdy pliki zostały zmodyfikowane wewnątrz vimdiff. W przeciwnym razie użyj:
    • :e aby ponownie załadować pliki, jeśli zostały zmodyfikowane poza vimdiff.
  • :set noscrollbind - > tymczasowo wyłącza jednoczesne przewijanie na obu bufory, odtwarzane przez :set scrollbind i przewijanie.

Większość tego, o co prosiłeś, to składanie: rozdział instrukcji obsługi Vima o składaniu. Poza diffami używam czasem:

  • zo - > open fold.
  • zc - > Zamknij fold.

Ale pewnie lepiej Ci będzie:

  • zr - > zmniejszanie poziomu składania.
  • zm - > jeszcze jeden poziom składania, proszę.

Lub nawet:

  • zR - > Reduce powiedziałem, że całkowicie się składa!.
  • zM - > fold Most!.

Druga rzecz, o którą prosiłeś, użyj n linii fałdowania, można znaleźć w Instrukcja obsługi Vima na opcjach, za pomocą sekcja na diff :

  • set diffopt=<TAB>, następnie zaktualizuj lub dodaj context:n.

Powinieneś również zapoznać się z sekcją instrukcji obsługi diff.

 216
Author: ninjalj,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-07-31 03:37:54

Ustaw vimdiff na ignoruj wielkość liter

Po uruchomieniu vim diff z

 gvim -d main.sql backup.sql &

Uważam, że denerwująco jeden plik ma słowa kluczowe MySQL pisane małymi literami, a drugi wielkimi literami pokazując różnice w praktycznie każdej innej linii

:set diffopt+=icase

To dynamicznie aktualizuje ekran i równie łatwo można go ponownie wyłączyć

 4
Author: zzapper,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-08-22 06:40:41

Właściwie, jeśli to zrobisz Ctrl+W W, nie będziesz musiał dodawać tego dodatkowego Ctrl. Robi to samo.

 3
Author: tubbo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-12-24 09:04:07

Ctrl + W, w jak wspomniano może być używany do poruszania się od panelu do panelu.

Teraz możesz sam wybrać konkretną zmianę i wkleić ją do drugiego panelu w następujący sposób.Tutaj daję np jak bym chciał zmienić mój kawałek kodu z pane 1 do pane 2 i obecnie mój kursor jest w pane1

  • Użyj Shift-v, aby podświetlić linię I Użyj klawiszy GÓRA lub dół, aby wybrać żądany fragment kodu i kontynuuj od kroku 3 napisanego poniżej, aby wkleić zmiany w innym pane.

  • Użyj trybu wizualnego, a następnie zmień go

    1 kliknięcie ' v ' spowoduje przejście do trybu wizualnego 2 Użyj klawisza w górę lub w dół, aby wybrać wymagany kod 3 Kliknij, klawisz escape Esc 4 Teraz użyj "yy", aby skopiować lub "dd", aby wyciąć zmianę 5 wykonaj 'ctrl + W, w' aby przejść do pane2 6 Kliknij "p", aby wkleić zmiany tam, gdzie ich potrzebujesz

 0
Author: Pratheusha KK,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-05-04 06:48:46