有没有办法调整 vimdiff 的行位置以进行更改?

Is there a way to adjust vimdiff's line position for a change?

我已经修复了项目中的一些缩进问题,我正在查看前后的 vimdiff 输出。我注意到 vimdiff 似乎对实际的变化很困惑,在这种情况下呈现出几乎无用的输出:

例如,似乎认为第一行是新添加的行:

<div class="text-xs-center p-4">

实际上,改变的只是缩进。 Vimdiff 无法正确识别更改。

在另一个类似的文件中,diff 效果更好:

我认为不同之处在于在第二个文件中我没有删除第一个换行符。

有没有办法手动修复此类问题,以便正确显示差异?我不想更改任何一个文件,更改是正确的。但我想告诉 vimdiff 它正在相互比较错误的行。

这可能吗?

底层 diff 工具比较各个行,而不管 "only" 缩进是否改变,或者更基本的东西。与您的第一种情况一样,有一个额外的未缩进行,因此 diff 将其识别为未更改,这会弄乱整个 diff。

如果您想确保只更改缩进,您可以通过

忽略空格更改
:set diffopt+=iwhite

然后,diff 应该完全没有变化(或者,在你的第一个例子中,只有添加的第 5 行)。

也许还有其他 diff 实用程序可以更智能地处理这些情况。如果你找到这样的工具,你可以配置 Vim 通过 'diffexpr' 使用它。