Как я могу посмотреть несколько Git Diff рядом в VIM - PullRequest
10 голосов
/ 11 марта 2010

Я хотел бы иметь возможность запускать команду, которая открывает git diff в vim, с вкладкой для каждого файла в наборе diff.

Так, если, например, я изменил файлы foo.txt и bar.txt в своем рабочем дереве и запустил команду, я бы увидел vim open с двумя вкладками. Первая вкладка будет содержать различие между foo.txt в моем рабочем дереве и foo.txt в репозитории, а вторая вкладка будет содержать различие для bar.txt.

У кого-нибудь есть идеи?

Ответы [ 4 ]

7 голосов
/ 11 марта 2010

Как бы я это сделал (хотя это не единственная команда)

  1. Открытие файлов с изменениями в новых vim вкладках:

    vim -p $ (git diff - только для имени)

  2. Для каждого буфера получите diff для вашего текущего HEAD с помощью vcscommand vim plugin

    : VCSVimDiff

Это дает хорошее представление о разнице, хотя и не в форме патча.

Для всего остального я бы придерживался git diff.

EDIT

Как пишет Дэйв ниже, шаги 1 и 2 можно объединить с помощью

vim -p $(git diff --name-only) -c "tabdo VCSVimDiff"
4 голосов
/ 24 сентября 2013

Адаптированный ответ Бенджамина Банье + Дейва Кирби выше для беглых пользователей.

Поскольку я использую fugitive.vim, я адаптировал вышеприведенное для моего наиболее частого варианта использования, просматривая разницу между двумя последними коммитами:

vim -p $(git diff --name-only HEAD~1 HEAD) -c "tabdo :Gdiff HEAD~1"

Загружать все изменения во вкладки намного лучше, чем последовательно их просматривать с помощью git difftool.

1 голос
/ 12 марта 2010

Хотя это не совсем то, что вы хотите, git difftool, вероятно, будет лучшим выбором. Стандартное поведение 'git difftool --tool = vimdiff --no-prompt HEAD' - запуск vimdiff последовательно для каждого файла в рабочем каталоге с изменениями.

0 голосов
/ 05 января 2017

Этот простой плагин работал для меня: TabMultiDiff . По сути, он создает вкладку diff для каждой пары файлов, передаваемых в vim. Вкладка названа в честь второго файла в каждой паре.

Обратите внимание, что менеджер плагинов не совместим с , поэтому вам нужно установить его вручную, скопировав tab-multi-diff.vim в .vim/plugin.

Вот скриншот сравнения двух пар простых файлов (aaa / aab и aac / aad). Обратите внимание, что я также использую vim-scripts / diffchar.vim , поэтому отдельные символы подсвечиваются. enter image description here

...