5

Я использую vimdiff в качестве моего difftool с git.

Допустим, я изменил двенадцать файлов. Проблема в том, что иногда я запускаю git diff и вокруг четвертого или пятого файла я вижу что-то, что я хочу отредактировать / изменить. Иногда мне нужно сделать еще несколько изменений вне этого. Проблема в том, что я не могу просто :qa и вернуться к взлому, потому что в vimdiff появилось еще шесть или семь различий. Это становится действительно утомительным :qa все эти файлы, не просматривая каждый раз, когда я хочу прервать git diff.

Есть ли способ установить vimdiff как difftool для git, чтобы все diff-файлы открывались в одном и том же экземпляре vim, например, в отдельных вкладках?

3 ответа3

4

Вы можете использовать плагины vim, опубликованные здесь. Тогда вам просто нужно установить difftool:

[multidiff]
  tool = vd -f

В качестве альтернативного приложения я бы предложил meld , который покажет вам измененные файлы - тогда вы можете выбрать только те файлы, которые вы хотите просмотреть.

Смотрите скриншот здесь для примера.

В дополнение к Marcos полезный комментарий, в качестве третьего (ручной альтернативы) , если вы хотите использовать vimdiff я бы рекомендовал следующие стратегии meld «s в сценарии (возможно , python

  • используйте git diff-files --name-status и git diff-index --name-status --cached HEAD для идентификации файлов, которые необходимо проверить .
  • Получите кэшированные версии этих файлов и поместите в /tmp/
  • Откройте все эти файлы - измененные файлы и их кэшированные версии - сразу в vimdiff - хотя, скорее всего, это невозможно в том смысле, в котором вы нуждаетесь - см. Ниже.

Однако, поскольку сам vimdiff , похоже, не обрабатывает несколько вкладок diff изначально, я рекомендую одно из других моих предложений выше.

4

Довольно простой обходной путь - добавить эту опцию в ваш файл ~/.gitconfig.

[difftool]
    tool = vimdiff $LOCAL $REMOTE
    prompt = true

Таким образом, перед каждым сравнением файлов вам будет предложено пропустить файл, ответив «нет», или прервать сравнение файлов с помощью Ctrl+C.

Пример:

$ git difftool
Viewing: 'file1.js'
Launch 'vimdiff' [Y/n]: y
2 files to edit

Viewing: 'file2.js'
Launch 'vimdiff' [Y/n]: n
2

Это то, что я использую. Требуется, чтобы вы использовали vim-fugitive

[alias] dt = "!f() { vim -p $(git diff --name-only) +\"tabdo Gdiff $@\" +tabfirst; }; f"

git dt откроет каждую пару различий в отдельной вкладке. Затем :tabclose чтобы закрыть одну пару, или :qa чтобы выйти.

источник

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .