2017-09-03 4 views
3

J'ai commencé à utiliser vimdiff et j'essaie de définir des couleurs pour cela. Les groupes DiffAdd et DiffDelete fonctionnent correctement, mais je souhaite que DiffChange et DiffText soient des couleurs différentes pour l'ancienne et la nouvelle version du fichier respectivement. (Plus précisément, le rouge pour l'ancien fichier et le vert pour le nouveau.) Voici comment fonctionne Visual Studio Code, par exemple:vimdiff: différentes couleurs pour le volet gauche et le volet droit

Le problème est que les couleurs de surbrillance sont partagées entre les tampons. en espérant y aurait-il un moyen d'écrire une fonction qui remapper toutes les instances de DiffChange à MyDiffChange dans un volet, mais je n'ai pas trouvé un moyen de le faire.

Même une solution assez hacky ferait, car il a seulement pour travailler dans ce cas d'utilisation spécifique

+1

Les groupes de surbrillance sont globaux et il n'y a aucune notion de "fenêtre de droite" et de "fenêtre de gauche", encore moins de "vieux fichier" et de "nouveau fichier". J'ai peur que vous deviez écrire tout vous-même. – romainl

Répondre

0

Les définitions de surbrillance ont en effet une portée globale, et une grande partie de la gestion des différences est fixe et intégrée. ne supporte pas cela.

En tant que hack, vous pouvez remplacer la surbrillance via matchadd() avec une priorité plus élevée. Ces définitions ont une portée de fenêtre, donc vous pouvez en définir d'autres en fonction de ce que le fichier représente (j'utiliserais une variable locale de type tampon b:version, avec les valeurs old ou new). Vous devez détecter les lignes que Vim considère comme étant modifiées, soit en différant vous-même les fichiers, soit via diff_hlID(). Jetez un oeil à diffchar.vim plugin pour des idées; le plugin implémente une superposition similaire.