Jak mogę wyświetlić wiele różnic Gita obok siebie w Vimie
Chciałbym móc uruchomić polecenie, które otwiera Git diff w Vimie, z zakładką dla każdego pliku w zestawie diff.
Więc jeśli na przykład zmieniłem pliki foo.txt i bar.txt w moim drzewie roboczym i uruchomiłem polecenie, aby zobaczyć vim otwarty z dwoma zakładkami. Pierwsza zakładka zawierałaby różnice między foo.txt w moim drzewie roboczym i foo.txt w repozytorium, a druga zakładka zawierałaby różnicowanie obok siebie dla paska.txt.
Ktoś ma jakieś pomysły?
4 answers
Tak bym to zrobił (choć nie jest to pojedyncze polecenie)
-
Otwieranie plików ze zmianami w nowych zakładkach
vim
:Vim-p $(git diff --name-only)
-
Dla każdego bufora Pobierz diff do bieżącej głowy za pomocą vcscommand vim plugin
: VCSVimDiff
To daje ładny widok na różnicę, choć nie w formie patcha.
Za cokolwiek innego bym się trzymał git diff
.
EDIT
Tak jak Dave pisze poniżej, kroki 1 i 2 można łączyć za pomocą
vim -p $(git diff --name-only) -c "tabdo VCSVimDiff"
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
2010-03-12 01:23:05
adaptacja powyższej odpowiedzi Benjamina Bannera + Dave 'a Kirby' ego dla użytkowników.
Ponieważ używam fugitive.vim, dostosowałem powyższe do mojego najczęstszego przypadku użycia, patrząc na różnice między ostatnimi 2 commitami:vim -p $(git diff --name-only HEAD~1 HEAD) -c "tabdo :Gdiff HEAD~1"
Ładowanie wszystkich zmian do kart jest o wiele lepsze niż przeglądanie ich sekwencyjnie za pomocą git difftool
.
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
2013-09-23 21:47:54
Chociaż nie robi dokładnie tego, co chcesz, git difftool jest prawdopodobnie najlepszym rozwiązaniem. Out of the box zachowanie 'Git difftool --tool=vimdiff --no-prompt HEAD' jest uruchamianie vimdiff sekwencyjnie dla każdego pliku w katalogu roboczym ze zmianami.
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
2010-03-12 13:37:42
Ten prosty plugin zadziałał dla mnie: TabMultiDiff . Zasadniczo tworzy kartę diff dla każdej pary plików przekazywanych do Vima. Nazwa karty pochodzi od drugiego pliku z każdej pary.
Uwaga nie jest kompatybilny z plugin manager , więc musisz ręcznie zainstalować go kopiując tab-multi-diff.vim
do .vim/plugin
.
Oto zrzut ekranu porównujący dwie pary prostych plików (aaa/AAB i AAC / aad). Zauważ, że używam również vim-scripts / diffchar.vim dlatego indywidualne znaki są podświetlone.
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
2017-04-13 12:51:57