gpt4 book ai didi

vim - 改进vimdiff相似度搜索机制的方法

转载 作者:行者123 更新时间:2023-12-04 14:07:53 25 4
gpt4 key购买 nike

我试图了解 vimdiff 是如何工作的。

在这里,我尝试比较两个简单的文件。第一个:

abcdefghijklmnopqrstuvwxyz

foo

abcdefghijklmnopqrstuvwxyz iii

bar

第二:
abcdefghijklmnopqrstuvwxyz

abcdefghijklmnopqrstuvwxyz

这是 diffmerge 实用程序的结果:

enter image description here

这是 vim 的结果:

enter image description here

请注意,vim 没有看到 abc...xyz 之间的相似性。和 abc...xyz iii行,并且不会在视觉上将它们排列在一行上。

在这种情况下,是否有一些设置可以改进 vimdiff?

最佳答案

正如评论中指出的,vim 使用外部实用程序 diff它不做单词差异,也不能找到移动和修改的行。

即使求助于 diffexpr 也不能令人满意,因为 Vim 期望来自外部实用程序的数据是“ed”风格的 diff。这排除了使用替代差异实用程序来制作基于单词甚至字符的差异,例如 diffmerge。

一些勤奋的插件作者制定的解决方法是包装这些更复杂的差异的结果,并将它们的输出转换为 Vim 使用的“ed”样式差异。我知道有两个这样的插件采用这种方法:chardiffvim-diff-enhanced .两者都给你词差异。此外,Vim-diff-enhanced 允许您在各种差异算法(迈尔斯、直方图、耐心)之间切换,因此可以根据具体情况决定哪种差异产生最佳结果。

我使用 vim-diff-enhanced,它比默认的 diff 更好,但仍然不是很好。 (注意:这取决于 git。)例如,我尝试了您的测试,如问题中所述,但它没有识别出第 5 行和第 3 行是相同的(即使使用 :set diffopt+=iwhite)。虽然,如果我在第一个示例文件的第 2 行中删除或添加了一些内容,那么 vimdiff 会匹配您从 diffmerge 获得的结果。

关于vim - 改进vimdiff相似度搜索机制的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36519864/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com