Używam vima jako mojego głównego edytora.
Chciałbym również użyć vima do różnicowania plików i modyfikowania plików podczas robienia różnic, aby naprawić łatwe zmiany (zamiast większości technik różnic, które są cyklem różnic / poprawek / różnic / poprawek).
Ponadto istnieją proste sposoby integracji vima z narzędziami różnicowymi używanymi przez narzędzia / strony kontroli źródła (szczególnie myślę o git, ale jestem pewien, że inni ludzie byliby zainteresowani integracją z innymi narzędziami / stronami kontroli źródła).
:Gdiff
i:Gvdiff
oba polecenia pozwalają zobaczyć różnicę między bieżącym buforem, jeśli bieżącym buforem zarządza git. Pomaga także w rozwiązywaniu konfliktów w układzie trzech okien, gdy występują konflikty scalania niektórych plikówvd () { diff $@ > /dev/null ; if [[ $? -eq 1 ]] ; then ; vimdiff -c 'windo set syntax=off' $@ ; fi ; }
i wywołuję jąvd file1 file2
. Służydiff
do ustalenia, czy pliki się różnią i otwiera się tylkovimdiff
wtedy, gdy tak jest. W przeciwnym razie pozostanę w skorupce. Wyłączam także podświetlanie składni w Vimie, ponieważ uważam, że rozprasza to różnicę. Działa tylko z dwoma plikami.Odpowiedzi:
vim ma tę funkcję wbudowaną (z poprawną flagą wiersza poleceń).
Spowoduje to otwarcie każdego pliku w widoku i wyróżnienie różnic.
Każdy identyczny kod jest
folded
niedostępny, więc nie musisz patrzeć na identyczny kod ani przewijać dużych fragmentów identycznego kodu.Ale jest też aplikacja otoki,
vimdiff
która poprawnie wywołuje vima z poprawnymi flagami.Jeśli używasz git, możesz skonfigurować zewnętrzne narzędzie do porównywania. Łatwo jest więc ustawić vimdiff jako narzędzie do porównywania git.
Korzystając z vimdiff, możesz edytować dowolną stronę, a podświetlanie różnic utrzymuje tempo, aby pokazać różnice.
Uwaga: Podczas edycji z git diff. Jeśli spróbujesz edytować wersję pliku przechowywaną w repozytorium, twoje zmiany zostaną odrzucone po wyjściu (git nie ufa ci z oryginałem, więc różnisz się od kopii tmp), ale możesz edytować lokalną kopię do swoich serc i zapisz go nad swoją aktualną wersją.
Niektóre podstawowe polecenia przydatne w
vimdiff
Inne ustawienia vima, których używam do pracy z highlitingiem w vimdiff
Wyłącza to podświetlanie bitów kodu, które zostały zmienione. Tak więc zmieniona linia jest podświetlona, dzięki czemu mogę dostrzec zmiany, ale tekst, który się zmienił, wyróżnia się na linii (ponieważ nie jest podświetlony).
źródło
:diffthis
polecenia, aby zainicjować różnicę, gdy Vim już działa.git config --global diff.tool vimdiff
,git diff
nadal pokazuje wszystko jak gdyby nic nie zmieni.git difftool
Jeśli edytujesz otwarty plik i chcesz porównać go z innym plikiem bez zamykania bieżącego:
Otwórz nowy plik na podzielonym ekranie:
Dla podziału pionowego:
lub podział poziomy:
Przełącz kursory na inny podzielony ekran:
Wywołaj „tryb różnicowy” w pliku:
Przełącz na inny plik i wywołaj „tryb różnicowy”:
Aby wyłączyć „tryb różnicowy”:
źródło
:windo diffthis
zbytMożesz umieścić poniższe ustawienie w
.gitconfig
pliku znalezionym w katalogu%homepath%
(lub%userprofile%
) aktualnie zalogowanego użytkownika:Umożliwi to narzędziu git bash korzystanie z vimdiff jako zewnętrznego narzędzia do porównywania.
źródło
Oto moja konfiguracja git:
https://github.com/tracyone/dotfiles/blob/master/.gitconfig
źródło
Widzę tylko trzy sytuacje, aby użyć vim jako difftool. Są one krótko opisane poniżej:
W przypadku git difftool umieść w swoim
~/.gitconfig
:Aby otworzyć vima jako narzędzie do porównywania dwóch plików, możesz wykonać następujące czynności:
Aby uzyskać widok różnicowy dla buforów, które są obecnie aktywne, tj. Dla wszystkich buforów, które mają przypisane okno na aktualnie aktywnej karcie, możesz wykonać następujące czynności:
Aby uzyskać więcej informacji, zobacz
:h diff
źródło
oto co robię:
:vnew
(aby mieć oba okna obok siebie) lub:new
(aby mieć okna na górze i na dole). jeśli masz konkretny plik do otwarcia w drugim oknie, możesz dołączyć ścieżkę w następujący sposób::vnew /path/to/secondfile.txt
oto funkcja niestandardowa, która jest w moim
~/.vimrc
:źródło
:diffthis
idiffoff!
nie musisz sam ustawiać wszystkich opcji diff (np. ustawianie kursora również przez diffmode)