我正在使用vimdiff进行git合并。有没有快速选择要使用的1个文件的方法?目前我只是从一个缓冲区中选择所有内容,将$MERGE替换为它,然后保存。我想我可以用宏来实现,但想知道是否有更好的方法。 谢谢!
有几种方法:
:%diffput
要将当前缓冲区的所有更改“put”到“other”缓冲区中。这使三方差异处理变得容易:
:%diffput OURS
“OURS”模式将唯一匹配当前差异中涉及的缓冲区名称。
以上所有内容都可以反过来进行,用 do 或者 :diffget
进行替换。
你应该看看Tim Pope的Fugitive插件。它是一个非常有用的插件。
当你在一个存在冲突的文件中运行Gdiff
命令时,会打开3个文件-目标文件、合并文件和工作副本。您需要切换到要保存的文件,并执行Gwrite!
来保存该文件。
有一整个Vimcast视频系列专门介绍如何使用这个插件解决合并冲突(以及其他5个关于Fugitive.vim的视频)。
:%diffget LO
或 :%diffget RE
是你需要的内容。Ctrl+w;←/↑/→/↓
在窗口中移动光标。:h start-vimdiff
了解如何进入diff模式)。v
进入VISUAL MODE。Page Down
直到最后一页)。:
,然后键入diffget <buffer number/name>
(:ls
将列出所有缓冲区,通常在vimdiff中它们从右到左编号为1-3或4(如果是三方比较))。:wqa
即可完成操作。或者,在步骤0后,您可以执行:%diffget <buffer number>
来获取指定缓冲区的所有更改,因为:diffget
也接受范围参数(请参阅:%
和:diffget
)。
反向操作也同样适用::%diffput <buffer>
会将所有更改发送到缓冲区编号,使得两个缓冲区具有相同内容。
:%diffget 4
,它完美地工作了。谢谢。 - NexusRex