vimdiff:左右窗格的颜色不同

时间:2017-09-03 04:30:19

标签: vim vim-syntax-highlighting vimdiff

我已经开始使用vimdiff了,我正试图为它设置颜色。 DiffAddDiffDelete组工作正常,但我希望DiffChangeDiffText分别为文件的旧版本和新版本提供不同的颜色。 (具体来说,旧文件为红色,新文件为绿色。例如,这就是Visual Studio Code的工作方式。

问题是高亮颜色在缓冲区之间共享。有没有解决的办法?我希望有一种方法可以编写一个函数,将一个窗格中的DiffChange的所有实例重新映射到MyDiffChange,但我还没有办法做到这一点。

即使是一个相当苛刻的解决方案也可以,因为它只需要为这个特定的用例工作。

1 个答案:

答案 0 :(得分:0)

高亮定义确实是全局范围的,并且大部分差异处理都是固定和内置的。你是对的,Vim不支持这个。

作为黑客,您可以通过优先级更高的matchadd()覆盖突出显示。这些定义是窗口范围的,因此您可以根据文件所代表的内容定义不同的定义(我将使用缓冲区局部变量b:version,其值为oldnew)。您需要检测Vim认为已更改的行,方法是自己再次对文件进行区分,或者通过diff_hlID()。看看diffchar.vim plugin的想法;该插件实现了类似的覆盖。