在Vimdiff中,我知道我可以使用“do”或“dp”将更改从一个文件移动到另一个文件...但是这些是针对单个更改的。如果我必须撤消特定作用域/选择内的所有更改(例如撤消对特定功能的所有更改,而其余部分保持不变),有没有办法一次性完成?

最佳答案

您可以使用视觉选择和ex命令:diffget/:diffput
因此,例如仅获取代码块({...})当前内部的更改

Vi}:diffget<Enter>

放置两个封闭级别(包括带括号的行)的更改:
V2a}:diffput<Enter>

请注意,由于这些是ex命令,所以运动是逐行的。当然,您可以使用任何范围,因此您可以重复可视范围或使用标记
:'a,'bdiffput

等。用你的想象力,这是vim :)

07-24 09:19