Si git
effectue une fusion à trois et a un conflit il ne peut « pas résoudre, il marque cette zone du fichier comme ceci:
No unresolvable conflicts here <<<<<<< HEAD xyz ||||||| parent of ... abc ======= 123 >>>>>>> ...
Y a-t-il un moyen (et, si oui, comment) de changer la couleur de fond de ces 3 « sections »:
-
<<<<<<< HEAD
par la ligne avant||||||| parent of ...
-
||||||| parent of ...
jusquà la ligne avant=======
- La ligne après
=======
à travers la ligne>>>>>>> ...
(EDIT: La question tourne autour de « sil existe un moyen de mettre en évidence certaines lignes en fonction des autres lignes. xyz
ne serait généralement pas mis en surbrillance, mais comme il « se situe entre <<<<<<<
et |||||||
il serait mis en surbrillance.)
Avec également la possibilité de gérer dautres ensembles de marqueurs de conflit?
Utilisation de la version la plus récente de vim disponible au moment dun commentaire. Donc, à partir de maintenant, 8.1.1183.
Jutilise un fond noir et 256 couleurs dans mon terminal. Je pensais que ce serait bien de donner à ces sections les couleurs les plus sombres R / G / B / C / M / Y, donc elles nont pas causé beaucoup de problème avec la coloration syntaxique. (Parlant des couleurs ANSI 52, 22, 17, 23, 53 et 58 – pas les couleurs 1 à 6.)
Commentaires
Réponse
Dans votre configuration Vim, vous pouvez faire ce qui suit (changer le couleurs et style à votre goût):
function! ConflictsHighlight() abort syn region conflictStart start=/^<<<<<<< .*$/ end=/^\ze\(=======$\||||||||\)/ syn region conflictMiddle start=/^||||||| .*$/ end=/^\ze=======$/ syn region conflictEnd start=/^\(=======$\||||||| |\)/ end=/^>>>>>>> .*$/ highlight conflictStart ctermbg=red ctermfg=black highlight conflictMiddle ctermbg=blue ctermfg=black highlight conflictEnd ctermbg=green cterm=bold ctermfg=black endfunction augroup MyColors autocmd! autocmd BufEnter * call ConflictsHighlight() augroup END
Le rendu comme suit:
Est-ce ce que vous recherchez?
Commentaires
- Que ' est absolument ce que je ' m après. Jai ' cependant quelques bizarreries avec le vimscript. Si je tape votre exemple, il ressemble à limage que vous avez publiée. Si je sauvegarde votre exemple, puis redémarrez vim en éditant le nouveau fichier, il devient horriblement déséquilibré. (vim 8.1.1186.) Encore plus étrange, si je supprime ensuite toutes les lignes dun fichier existant montrant bizarrement, et que je recolle son contenu, ' s affiche toujours faux. i.ibb.co/jvGMH6t/wtfvim.jpg
- Son utilisation dans un scénario de fusion réel déclenche une coloration encore plus étrange que limage I lié, avec:
conflictStart
correctement mis en évidence; la|||||||
partie deconflictMiddle
en rouge mais le reste de la ligne en bleu comme il se doit; le=======
en rouge; la ligne>>>>>>> .*
en jaune (doù vient le jaune, il ny a pas de jaune); et le reste du fichier qui ne devrait pas ' faire partie du conflit du tout en vert, étant toujours pris commeconflictEnd
selon la fonctionSynStack()
de stackoverflow.com/questions/30247603 - De même, en utilisant le scénario de fusion, si je copie / colle le contenu dans un nouveau fichier, il saffiche comme prévu, mais dès quil ' est enregistré et que vim est redémarré, il saffiche mal.
- Dans un scénario de fusion réel, vous pouvez désactiver la coloration de différence dorigine en utilisant
:diffoff
, en ne laissant que le type de fichier ' s coloration syntaxique. Je vais jouer un peu pour voir votre premier cas. - Ack, désolé, javais oublié que javais laissé le plugin conflict_marker installé après lavoir essayé avant mon message, ce qui était en conflit et causait le problème. Supprimer cela et ne plus avoir ce problème.
Réponse
- conflict-marker.vim peut mettre en évidence les marqueurs eux-mêmes; il propose également des sauts et des moyens de les résoudre.
- mon propre plugin ConflictDetection détecte et met en évidence toutes les sections (via la coloration syntaxique); un compagnon plugin ConflictMotions propose des mouvements et des commandes de résolution.
xyz
ne serait généralement pas mis en surbrillance, mais comme il ' s entre<<<<<<<
et|||||||
Je voudrais quil soit mis en évidence.