Vimdiff: Как поместить все изменения внутри определенной функции из одного файла в другой?

В Vimdiff я знаю, что могу использовать "do" или "dp" для перемещения изменений из одного файла в другой... но они предназначены для индивидуальных изменений. Если мне нужно отменить все изменения внутри определенной области/выбора (скажем, отменить все изменения в конкретной функции, но оставить без изменений нет), есть ли способ сделать это за один раз?

Ответ 1

Вы можете использовать визуальный выбор и команду ex :diffget/:diffput

Итак, например, чтобы получить изменения только для текущих внутренних блоков кода ({...})

Vi}:diffget<Enter>

Чтобы внести изменения для двух охватывающих уровней, включая строки с помощью скобок:

V2a}:diffput<Enter>

Обратите внимание, что поскольку они являются ex-командами, движения являются линейными. Конечно, вы можете использовать любой диапазон, чтобы вы могли повторять визуальный диапазон или использовать маркеры

:'a,'bdiffput

и т.д.. Используйте свое воображение, это vim:)