如何显示单词级'解决与3向差异冲突时的变化?

时间:2015-02-15 14:21:17

标签: vim vim-fugitive

解决与逃犯的冲突很好。看完之后 Painless Merge Conflict Resolution in Git,我开始思考如何不仅在行级别而且在单词级别上显示更改。

所有示例/案例均基于painless_git_conflicts_resolution repoHub用于使git clone命令更简洁。

具有禁用diff3冲突风格的逃犯。

hub clone ryrych/painless_git_conflicts_resolution fugitive_no_diff3 cd fugitive_no_diff3/ git checkout beta git merge origin/master vim roses.txt :Gdiff

结果如下:

Resolving conflicts with fugitive without diff3 enabled

问题是你只能看到所有线路都以某种方式发生了变化。这个例子非常简短,但有多少人发现第3行添加了

RubyMine可以解决这个问题,虽然并非总是如此,但不会经常使用差异标记,并且不会突出显示差异。虽然在这个屏幕截图上没有差异标记,但缺乏“对比”使得解决冲突变得非常困难。

Resolving conflicts with RubyMine

启用diff3 +并显示共同祖先的逃犯:

Show base in fugitive.vim conflict diff stackoverflow问题让我尝试the accepted answer,但解决方案并非改进。

hub clone ryrych/painless_git_conflicts_resolution fugitive_with_diff3 cd fugitive_with_diff3/ git checkout beta git merge origin/master vim roses.txt :split :Gdiff [Ctrl][W][J] :Gedit :1

Resolving conflicts with fugitive without diff3 disabled

opendiff为mergetool

hub clone ryrych/painless_git_conflicts_resolution opendiff cd opendiff/ git checkout beta git merge origin/master git mergetool

和voilà!

Resolving conflicts with opendiff

当然,这解决了这个问题,但是我依赖的是一个仅为一个系统设计的外部工具。总结一下:是否有可能在Vim中实现与opendiff类似的东西?

1 个答案:

答案 0 :(得分:1)

我发现在我的机器上(运行vim 7.4),所有差异都会突出显示线条内的差异。来自:help view-diff的文本暗示这是标准行为。它没有说明打开或关闭功能,只是hl-DiffText突出显示组用于"更改了更改行内的文本"

我会尝试不同的配色方案,或者至少尝试并仔细检查您当前的配色方案是否定义了hl-DiffText的外观

编辑:显然,给定的示例实际上很难显示字级差异。每一行都有多个地方的变化,它们非常短,并且没有任何行保持完全不变以提供上下文。正如您在屏幕截图中看到的那样,删除冲突标记会将所有"所有基础"相同行号的行,并突出显示单词级差异。您可能想尝试更复杂的回购/合并冲突。

:Gdiff in vim not showing word-level changes

:Gdiff in vim showing word-level changes