使用vimdiff替换整个文件?

maz*_*lix 12 vim merge vimdiff git-merge

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

seh*_*ehe 32

几种方式:

:%diffput
Run Code Online (Sandbox Code Playgroud)

将当前缓冲区中的所有更改"放入"到"其他"缓冲区.这样可以轻松实现三向差异:

:%diffput OURS
Run Code Online (Sandbox Code Playgroud)

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

以上所有可以反过来,代替do:diffget

  • 我在缓冲区#4中使用了我的好版本所以我使用了`:%diffget 4`并且它工作得很好.谢谢. (2认同)

e3m*_*eus 10

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

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

有一个完整的Vimcast解释了如何解决与这个插件的合并冲突(和其他5个vimcasts解释更多关于Fugitive.vim).


Cat*_*Dog 6

我认为:%diffget LO或者:%diffget RE是你需要的。

注意:你需要在 vim windows 的 MERGED 部分运行它。您可以使用在窗口周围移动光标Ctrl+w;?/?/?/?


mim*_*ara 5

  1. 确保所有参与的缓冲区都处于 diff 模式(请参阅:h start-vimdiff如何启动 diff 模式)
  2. v为基地中的视觉模式
  3. 选择整个文件(一直按Page Down
  4. :然后写入diffget <buffer number/name>: ls将列出所有缓冲区,通常在 vimdiff 中它们是从右到左 1-3 或 4 如果 3 向差异)
  5. 之后就: wqa完成了

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

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