Использовать vimdiff для замены всего файла?

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

Ответ 1

Вы должны взглянуть на плагин Tim Pope Fugitive. Это действительно полезный плагин.

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

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

Ответ 2

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

:%diffput

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

:%diffput OURS

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

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

Ответ 3

  • Сделайте v для VISUAL MODE в базе
  • Выберите весь файл (нажмите Page Down полностью)
  • Запишите :, затем diffget <buffer number/name> (: ls перечислит все буферы, как правило, в vimdiff они справа налево 1-3 или 4, если 3-х канальный diff)
  • После этого просто : wqa и вы закончили

Ответ 4

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

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