如何在 vimdiff 中合并来自一个修订版的两行和来自另一修订版的第三行?
How can I merge two lines from one revision and a third from the other in vimdiff?
我正在将两个 git 分支合并在一起。我正在使用 vimdiff 来执行此操作,因此我的终端中显示了三个 vim 窗格。
同样的冲突在我的合并中出现了数百次:
每次遇到它,我都想做同样的事情:保留顶部的两行来自 HEAD(粉红色)和底部的两行来自 OTHER(蓝色)。
目前我正在输入:
差异 3
接受 blue 的更改,然后进入插入模式并手动将 etc 更改为 var。
我觉得必须有一种更快的方法来让顶部两行每次都保持粉红色,第三行保持蓝色。在那儿?这会节省我很多打字时间。
谢谢。
如果冲突总是一样的,也许,你可以使用git rerere
(What is git-rerere and how does it work?).
如果不是不同冲突的冲突(比如文件中多次出现冲突),可以做一个宏:
qq
搜索冲突:
/<<<<<<<
删除行:
dd
找到冲突的中间点:
/=======
排队视觉模式:
V
找到您要保留的最后一条蓝线之前的那条线:
/plan-path
全部删除:
d
找到冲突的结尾:
/>>>>>>>
删除它
dd
最后,停止宏:
q
制作宏后,计算冲突的发生次数:
:%s/<<<<<<<//n
执行宏次数:
42@q
如果您有其他类型的冲突,您可以根据需要调整宏。
我正在将两个 git 分支合并在一起。我正在使用 vimdiff 来执行此操作,因此我的终端中显示了三个 vim 窗格。
同样的冲突在我的合并中出现了数百次:
每次遇到它,我都想做同样的事情:保留顶部的两行来自 HEAD(粉红色)和底部的两行来自 OTHER(蓝色)。
目前我正在输入: 差异 3 接受 blue 的更改,然后进入插入模式并手动将 etc 更改为 var。
我觉得必须有一种更快的方法来让顶部两行每次都保持粉红色,第三行保持蓝色。在那儿?这会节省我很多打字时间。
谢谢。
如果冲突总是一样的,也许,你可以使用git rerere
(What is git-rerere and how does it work?).
如果不是不同冲突的冲突(比如文件中多次出现冲突),可以做一个宏:
qq
搜索冲突:
/<<<<<<<
删除行:
dd
找到冲突的中间点:
/=======
排队视觉模式:
V
找到您要保留的最后一条蓝线之前的那条线:
/plan-path
全部删除:
d
找到冲突的结尾:
/>>>>>>>
删除它
dd
最后,停止宏:
q
制作宏后,计算冲突的发生次数:
:%s/<<<<<<<//n
执行宏次数:
42@q
如果您有其他类型的冲突,您可以根据需要调整宏。