vimdiff:左右 Pane 的不同颜色

标签 vim vim-syntax-highlighting vimdiff

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

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

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

最佳答案

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

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

关于vimdiff:左右 Pane 的不同颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46020283/

相关文章:

git - 仅在选项卡中获取 git diff 输出

vim - 查看名称与模式匹配的 vim 变量(即显示名称包含 "airline"的变量)

vim - 禁用 vim 的启动消息(vimdiff、vim -o -O 的)

vim - VIM-显示上次保存版本与当前未保存版本的差异

vim - 从 Vim 可视模式复制到系统剪贴板

vim - 非常简单的vim语法文件

vim - 在 vim 中以可视模式更改文本选择颜色

vim - 汇编vim语法高亮

git - 你如何取消外部 git diff?

git - 使用 vim 作为 git difftool