【问题标题】:vimdiff: Different colors for left and right panevimdiff:左右窗格的不同颜色
【发布时间】:2018-02-11 16:50:51
【问题描述】:

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

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

即使是一个相当老套的解决方案也可以,因为它只需要适用于这个特定的用例。

【问题讨论】:

  • 高亮组是全局的,没有“右窗口”和“左窗口”的概念,更不用说“旧文件”和“新文件”了。恐怕您必须自己编写所有内容。
  • @Mistodon 你找到/想出解决方案了吗?

标签: vim vim-syntax-highlighting vimdiff


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2010-11-19
    • 2011-01-02
    • 2012-11-14
    • 2012-10-02
    • 1970-01-01
    • 1970-01-01
    • 2019-05-11
    • 1970-01-01
    • 2022-12-21
    相关资源
    最近更新 更多