2017-09-03 520 views
3

我已经开始使用vimdiff,并且正在尝试为它设置颜色。 DiffAddDiffDelete组正常工作,但是我希望DiffChangeDiffText分别对于旧版本和新版本的文件是不同的颜色。 (具体来说,旧文件为红色,新文件为绿色,这是Visual Studio代码的工作原理,例如vimdiff:左右窗格的不同颜色

问题是突出显示颜色是在缓冲区之间共享的,有没有办法解决这个问题?希望会有编写将重新映射的DiffChange所有实例MyDiffChange在一个窗格中的一个功能的方式,但我还没有找到一种方法来做到这一点。

即使是相当哈克的解决办法做,因为它只有为这个特定的用例工作

+1

突出显示的组是全局的,没有“右窗口”和“左窗口”的概念,更不用说“旧文件”和“新文件”。恐怕你必须自己写一切。 – romainl

回答

0

高亮定义确实是全局作用域,而且大多数差异处理是固定的和内置的。我不支持这个。

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