Hvis git utfører en 3-veis sammenslåing og har en konflikt det kan ikke løse, det markerer det området av filen slik:

No unresolvable conflicts here <<<<<<< HEAD xyz ||||||| parent of ... abc ======= 123 >>>>>>> ... 

Er det en måte (og i så fall hvordan) å endre bakgrunnsfargen på disse 3 «seksjonene»:

  • <<<<<<< HEAD gjennom linjen før ||||||| parent of ...
  • ||||||| parent of ... gjennom linjen før =======
  • Linjen etter ======= gjennom linjen >>>>>>> ...

(EDIT: Spørsmålet dreier seg om det er en måte å markere visse linjer avhengig av andre linjer. xyz vil vanligvis ikke bli uthevet, men siden det er mellom <<<<<<< og ||||||| det ville bli uthevet.)

Med å kunne håndtere andre sett med konfliktmarkører?

Bruk av den nyeste versjonen av vim som var tilgjengelig på tidspunktet for en kommentar. Så nå, 8.1.1183.

Jeg bruker svart bakgrunn og 256 farger i terminalen min. Jeg tenkte at det ville være hyggelig å gi disse seksjonene de mørkeste R / G / B / C / M / Y-fargene, så de forårsaket ikke mye av et problem med syntaksutheving. (Snakker om ANSI-farger 52, 22, 17, 23, 53 og 58 – ikke 1-6 farger.)

Kommentarer

  • En enkel google-søk ville ha vært tilstrekkelig: github.com/rhysd/conflict-marker.vim
  • @klaus, jeg burde ha nevnt at jeg så på det pluginet mens jeg gjorde mye google søk. Det pluginet fremhever konfliktmarkørene selv. Det ' t fremhever ikke teksten de markørene er assosiert med, på andre linjer. Jeg tror det store problemet er om det ' en måte å markere visse linjer avhengig av andre linjer. Betydningen, i mitt eksempel, ville xyz vanligvis ikke bli uthevet, men siden den ' s mellom <<<<<<< og ||||||| Jeg vil at det skal fremheves.

Svar

I Vim-konfigurasjonen kan du gjøre følgende (endre farger og styling etter eget ønske):

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 

Hvilket gjengis som følger:

skriv inn bildebeskrivelse her

Er det det du leter etter?

Kommentarer

  • At ' er absolutt det jeg ' etter. Jeg ' har imidlertid noen underlige ting med vimscriptet. Hvis jeg skriver inn eksemplet ditt, ser det ut som bildet du la ut. Hvis jeg lagrer eksemplet ditt, så start vim med å redigere den nye filen, blir den fryktelig ute av veien. (vim 8.1.1186.) Enda merkeligere, hvis jeg da sletter alle linjene i en eksisterende fil som vises underlig, og limer innholdet på nytt, viser det ' fortsatt feil. i.ibb.co/jvGMH6t/wtfvim.jpg
  • Bruk av det i et faktisk sammenslåingsscenario utløser en enda merkeligere farging enn bildet jeg koblet, med: conflictStart er riktig uthevet; ||||||| delen av conflictMiddle i rødt, men resten av linjen i blått som det skal være; ======= i rødt; >>>>>>> .* linjen i gult (hvor kom gult inn i dette, det er ikke gult); og resten av filen som ikke ' i det hele tatt ikke skal være en del av konflikten, blir fortsatt plukket opp som conflictEnd i henhold til SynStack() -funksjonen fra stackoverflow.com/questions/30247603
  • På samme måte bruker du den faktiske flette scenario, hvis jeg kopierer / limer inn innholdet i en ny fil, vises det som forventet, men så snart det ' er lagret og vim startes på nytt, viser det feil.
  • I et faktisk sammenslåingsscenario kan du deaktivere den opprinnelige difffargen ved hjelp av :diffoff, og bare la filtypen ' syntaks høydepunkt. Jeg vil spille litt for å se for din første sak.
  • Ack, beklager, hadde glemt at jeg hadde latt plugin for konfliktmarkør være installert etter å ha prøvd det før innlegget mitt, som var motstridende og forårsaket problemet. Fjerner det og har ikke lenger det problemet.

Svar

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *