如何在vimdiff中合并来自一个修订版本的两行和来自另一修订版本的第三行?

时间:2019-05-02 10:33:07

标签: vim merge vimdiff

我正在将两个git分支合并在一起。我正在使用vimdiff来执行此操作,因此终端中显示了三个vim窗格。

同一冲突在我的合并中出现了数百次: vimdiff example

每次碰到它时,我都想做同样的事情:保持HEAD的前两行(粉红色)和OTHER(最下面的线)(蓝色)。

此刻我正在输入:     diffg 3 要接受blue的更改,请进入插入模式,然后将etc手动更改为var。

我觉得每次都必须有一种更快的方法来使前两行保持粉色,而第三行保持蓝色。在那儿?这样可以节省很多输入时间。

谢谢。

1 个答案:

答案 0 :(得分:4)

如果冲突总是相同的,也许可以使用git rerereWhat is git-rerere and how does it work?)。

如果不是由于不同的冲突而发生的冲突(例如,如果冲突在文件中多次出现),则可以创建一个宏:

qq

搜索冲突:

/<<<<<<<

删除行:

dd

找到冲突的中部:

/=======

进入在线视觉模式:

V

在您要保留的最后一条蓝线之前找到该行:

/plan-path

删除所有内容:

d

找到冲突的结束:

/>>>>>>>

删除

dd

最后,停止宏:

q

创建宏后,计算发生冲突的次数:

:%s/<<<<<<<//n

多次执行宏:

42@q

如果还有其他类型的冲突,则可以根据需要调整宏。