2017-09-03 524 views
3

我已經開始使用vimdiff,並且正在嘗試爲它設置顏色。 DiffAddDiffDelete組正常工作,但是我希望DiffChangeDiffText分別對於舊版本和新版本的文件是不同的顏色。 (具體來說,舊文件爲紅色,新文件爲綠色,這是Visual Studio代碼的工作原理,例如vimdiff:左右窗格的不同顏色

問題是突出顯示顏色是在緩衝區之間共享的,有沒有辦法解決這個問題?希望會有編寫將重新映射的DiffChange所有實例MyDiffChange在一個窗格中的一個功能的方式,但我還沒有找到一種方法來做到這一點。

即使是相當哈克的解決辦法做,因爲它只有爲這個特定的用例工作

+1

突出顯示的組是全局的,沒有「右窗口」和「左窗口」的概念,更不用說「舊文件」和「新文件」。恐怕你必須自己寫一切。 – romainl

回答

0

高亮定義確實是全局作用域,而且大多數差異處理是固定的和內置的。我不支持這個。

作爲一種破解,您可以通過matchadd()優先級更高的突出顯示。這些定義是窗口範圍的,因此您可以根據文件所代表的內容定義不同的(我將使用緩衝區本地變量b:version,值爲oldnew)。您需要檢測Vim認爲已更改的行,或者通過自己再次區分文件,或者通過diff_hlID()。看看diffchar.vim plugin的想法;該插件實現了一個類似的覆蓋。