Слияние изменений с помощью vimdiff
В моем случае у меня есть два файла file1 и file2. Используя vimdiff, я хочу объединить изменения следующим образом:
- В первом отличии, поместите строку из файла1 над строкой из файла2. Это означает, что разница в размере
Listing 2
в файле2 и List 2
должна быть List 2
, а затем Listing 2
в объединенном файле.
- Обратный случай в другом изменении.
Снимок показан ниже.
![enter image description here]()
Как мы можем достичь этого с помощью vimdiff?
Ответы
Ответ 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
, чтобы перейти к следующей разнице.