При использовании в качестве инструмента слияния для Git, что эквивалент в vimdiff для kdiff3 «Выбрать строки из A/B/C»? Есть ли для этого ярлык, например Ctrl+1/2/3 в kdiff3?
Эквивалент Vimdiff для Select Lines
Ответы (1)
Судя по разделу Справочного руководства Vim для vimdiff, встроенных команды с полной функциональностью Ctrl+1/2/3 в vimdiff. Под «полной функциональностью» я подразумеваю то, что в kdiff3 вы могли выполнять команды Ctrl+2, Ctrl+3 kbd>, Ctrl+1 в таком порядке, и в объединенной версии вы получите строки различий из буфера B, за которыми следуют строки из буфера C, за которыми следуют строки из буфера А.
Однако есть команда для выполнения более ограниченной версии функциональности, доступной в kdiff3. Если вы хотите использовать только строки из одного из входных файлов, тогда доступна команда [count]
do, где [count]
обычно равно 1, 2 или 3 в зависимости от того, из какого буфера vim вы хотите извлечь строки. (do означает "получение различий".)
Например, если у вас возникла следующая ситуация слияния: затем вы можете переместить курсор на конфликт слияния в нижнем буфере и ввести 1d o если вы хотите "обезьяна", 2do если вы хотите "свинья", или 3do, если вы хотите "кит".
Если вам нужно захватить строки из нескольких буферов при слиянии с vimdiff, я бы рекомендовал установить для параметра конфигурации Git merge.conflictstyle значение diff3 (git config merge.conflictstyle diff3
), чтобы общий предок отображался в объединенном буфере файла, как показано на скриншоте выше. Затем просто переместите строки по своему вкусу с помощью команд vim и удалите обозначения различий и все неиспользуемые строки.