17

我正在使用 vimdiff 进行 git 合并。有没有一种快速的方法来选择要使用的 1 个文件,现在我只是从一个缓冲区中选择所有内容,用它替换 $MERGE,然后保存。我想我可以宏化,但想知道是否有更好的方法。谢谢!

4

4 回答 4

38

几种方式:

:%diffput

将所有更改从当前缓冲区“放入”到“其他”缓冲区。这使得使用三向差异变得容易:

:%diffput OURS

'OURS' 模式将唯一匹配参与当前差异的缓冲区名称

以上所有可以反过来完成,替换do:diffget

于 2011-06-07T00:21:50.503 回答
12

你应该看看Tim Pope 的 Fugitive 插件。这是一个非常有用的插件。

Gdiff在冲突文件中运行时,会打开 3 个文件 - 目标、合并和工作副本。您将切换到要保存的文件,然后执行Gwrite!以保存该文件。

有一个完整的Vimcast解释如何使用这个插件解决合并冲突(以及其他 5 个 vimcast 解释更多关于 Fugitive.vim 的内容)。

于 2011-06-07T02:23:55.510 回答
6
于 2017-08-10T23:37:39.900 回答
5
  1. 确保所有参与的缓冲区都处于差异模式(请参阅:h start-vimdiff如何启动差异模式)
  2. v在底座中为 VISUAL MODE做
  3. 选择整个文件(Page Down一直按)
  4. :然后写入diffget <buffer number/name>: ls将列出所有缓冲区,通常在 vimdiff 中它们是从右到左 1-3 或 4 如果 3 路 diff)
  5. 然后: wqa你就完成了

或者,在第 0 步之后,可以:%diffget <buffer number>从指定的缓冲区获取所有更改,因为它:diffget也接受范围。(见:%:diffget。)

反过来也可以::%diffput <buffer>将所有更改发送到缓冲区编号,使两个缓冲区具有相同的内容。

于 2014-06-19T14:37:48.583 回答