我已经开始使用vimdiff了,我正试图为它设置颜色。 DiffAdd
和DiffDelete
组工作正常,但我希望DiffChange
和DiffText
分别为文件的旧版本和新版本提供不同的颜色。 (具体来说,旧文件为红色,新文件为绿色。例如,这就是Visual Studio Code的工作方式。
问题是高亮颜色在缓冲区之间共享。有没有解决的办法?我希望有一种方法可以编写一个函数,将一个窗格中的DiffChange
的所有实例重新映射到MyDiffChange
,但我还没有办法做到这一点。
即使是一个相当苛刻的解决方案也可以,因为它只需要为这个特定的用例工作。
答案 0 :(得分:0)
高亮定义确实是全局范围的,并且大部分差异处理都是固定和内置的。你是对的,Vim不支持这个。
作为黑客,您可以通过优先级更高的matchadd()
覆盖突出显示。这些定义是窗口范围的,因此您可以根据文件所代表的内容定义不同的定义(我将使用缓冲区局部变量b:version
,其值为old
或new
)。您需要检测Vim认为已更改的行,方法是自己再次对文件进行区分,或者通过diff_hlID()
。看看diffchar.vim plugin的想法;该插件实现了类似的覆盖。