Использовать vimdiff для замены всего файла? - PullRequest
12 голосов
/ 06 июня 2011

Я использую vimdiff для git merge.Есть ли быстрый способ выбрать 1 файл для использования, сейчас я просто выбираю все из одного буфера, заменяя этим $ MERGE, а затем сохраняю.Я думаю, я могу это макрос, но мне было интересно, если есть лучший способ.Спасибо!

Ответы [ 4 ]

32 голосов
/ 07 июня 2011

Несколько способов:

:%diffput

сделать «поместить» все изменения из текущего буфера в «другой» буфер.Это облегчает использование трехсторонних различий:

:%diffput OURS

Шаблон 'OURS' будет уникальным образом совпадать с именами буферов, участвующих в текущем diff

Все вышеперечисленное можно выполнить вобратный, заменяя d o или :diffget

10 голосов
/ 07 июня 2011

Вам стоит взглянуть на Беглый плагин Тима Поупа .Это действительно полезный плагин.

Когда вы запускаете Gdiff в конфликтном файле, открывается 3 файла - целевая, объединенная и рабочая копия.Вы переключитесь на файл, который хотите сохранить, и выполните команду Gwrite!, чтобы сохранить этот файл.

Существует целый Vimcast , объясняющий, как разрешить конфликты слияния с этим плагином (и другие 5 vimcasts, объясняющие больше о Fugitive.vim).

2 голосов
/ 11 августа 2017

Я думаю, :%diffget LO или :%diffget RE - это то, что вам нужно.

Примечание: вам нужно запустить его в MERGED-части окна vim.Вы можете перемещать курсор вокруг окон, используя Ctrl+w;←/↑/→/↓

2 голосов
/ 19 июня 2014
  1. Do v для визуального режима на базе
  2. Выберите весь файл (полностью нажмите Page Down)
  3. Напишите :, затем diffget <buffer number/name> (: ls перечислит все буферы, обычно в vimdiff они справа налево 1-3 или 4, если 3-сторонняя разница)
  4. После этого просто : wqa и все готово
...