1

我对 vimdiff 有奇怪的问题,每次我做这样的事情:

git difftool HEAD~2 -- src/some-file.hs
  • 首先-它打开两个单独的窗口,一个-带有差异,第二个-带有文件本身。为什么以及如何解决这个问题?我不需要第二个窗口

  • 另一个问题是 - 它永远不会使两个缓冲区的宽度相同,分隔线一直向右推,我必须手动执行C-w+=使它们的宽度相同,我该如何解决?

difftooll 设置.gitconfig为:

[diff]
    tool = gvimdiff

我也不知道如何在 SourceTree 中正确设置它。我想使用 vimdiff 作为外部差异/合并

4

1 回答 1

1

您可以将 vim 用作 git 合并工具,但您已经注意到它的默认外观非常混乱。您可以通过将 vim 包装在自定义脚本中并使用它来清理它 - 一个示例在这里http://vim.wikia.com/wiki/A_better_Vimdiff_Git_mergetool

但是,如果您只想直接查看差异并进行编辑,只需正常打开文件,即vim src/some-file.hs. git 将用带有冲突标记的版本替换文件。您可以使用类似的方法快速找到冲突https://github.com/rhysd/conflict-marker.vim- 但我发现只需键入\>>>>就足够快了。对于更复杂的情况,我使用 fugitive vim 插件(见下一段)

如果你真的想使用 vim 来处理单个文件上的 git 冲突,我建议安装fugitive。然后你可以做。

:e src/some-file.hs
:Gdiff

并得到原始、左、右版本的三个缓冲区。但:Gdiff也接受版本参数,因此您也可以比较非冲突文件。

于 2014-12-16T00:30:29.297 回答