Подтвердить что ты не робот

Слияние изменений с помощью vimdiff

В моем случае у меня есть два файла file1 и file2. Используя vimdiff, я хочу объединить изменения следующим образом:

  • В первом отличии, поместите строку из файла1 над строкой из файла2. Это означает, что разница в размере Listing 2 в файле2 и List 2 должна быть List 2, а затем Listing 2 в объединенном файле.
  • Обратный случай в другом изменении.

Снимок показан ниже.

enter image description here

Как мы можем достичь этого с помощью vimdiff?

4b9b3361

Ответ 1

Вы можете переключаться между двумя окнами с помощью Cntrl-W. Вы можете скопировать из одного окна CTRL-W, а затем вставить в другой. По мере устранения различий основные моменты будут меняться и исчезать.

vimdiff на самом деле не является инструментом слияния. Он показывает различия между файлами, и вы выполняете слияние вручную.

Посмотрите на это видео.

Ответ 2

Для объединения можно использовать следующие основные команды:

do - Получить изменения из другого окна в текущее окно.

dp - Поместите изменения из текущего окна в другое окно.

]c - Переход к следующему изменению.

[c - Переход к предыдущему изменению.

zo - открытые сложенные линии.

zc - закрыть сложенные линии.

Ctrl + w, w - изменить окно.

:only | wq - закройте другие окна, напишите и закройте.

Подробнее см.: http://amjith.blogspot.com/2008/08/quick-and-dirty-vimdiff-tutorial.html

Ответ 3

Вы можете просто переключаться между окнами и копировать и вставлять для устранения различий, как предлагает @David W., но Vim также выделил команды :diffput и :diffget, чтобы упростить это. С помощью этих (или соответствующих нормальных режимов do и dp) вам не нужно переключаться между окнами, а диапазон по умолчанию соответствует текущему изменению.

Если вам нужно добавить вместо перезаписывания другие отличия буфера (что является довольно необычным случаем в классическом двухстороннем разломе), вам все равно придется вытащить исходные строки и поместить их после :diffget.

После того, как вы закончите в одном месте, вы можете использовать команды ]c, [c, чтобы перейти к следующей разнице.