Hvis git udfører en 3-vejs fletning og har en konflikt det kan ikke løse, det markerer det område af filen på denne måde:

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

Er der en måde (og i givet fald hvordan) at ændre baggrundsfarven på disse 3 “sektioner”:

  • <<<<<<< HEAD gennem linjen før ||||||| parent of ...
  • ||||||| parent of ... gennem linjen før =======
  • Linjen efter ======= gennem linjen >>>>>>> ...

(EDIT: Spørgsmålet drejer sig om, hvorvidt der er en måde at fremhæve visse linjer afhængigt af andre linjer. xyz vil normalt ikke blive fremhævet, men da det er mellem <<<<<<< og ||||||| det ville blive fremhævet.)

Med også at være i stand til at håndtere andre sæt konfliktmarkører?

Brug af den seneste version af vim, der var tilgængelig på tidspunktet for en kommentar. Så fra nu af 8.1.1183.

Jeg bruger en sort baggrund og 256 farver i min terminal. Jeg tænkte, at det ville være rart at give disse sektioner ved hjælp af de mørkeste R / G / B / C / M / Y-farver, så de forårsagede ikke meget af et problem med syntaksfremhævning. (Taler om ANSI-farver 52, 22, 17, 23, 53 og 58 – ikke 1-6 farverne.)

Kommentarer

  • En simpel google-søgeforespørgsel ville have været tilstrækkelig: github.com/rhysd/conflict-marker.vim
  • @klaus, jeg skulle have nævnt, at jeg kiggede på det plugin, mens jeg lavede en masse google-søgning. Dette plugin fremhæver selv konfliktmarkørerne. Det ' fremhæver ikke også teksten, som markører er knyttet til, på andre linjer. Jeg tror, det store problem ved hånden er, hvis der ' en måde at fremhæve visse linjer afhængigt af andre linjer. Betydning, i mit eksempel, ville xyz normalt ikke blive fremhævet, men da det ' s mellem <<<<<<< og ||||||| Jeg vil gerne have det fremhævet.

Svar

I din Vim-konfiguration kan du gøre følgende (ændre farver og styling efter 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 gengives som følger:

indtast billedebeskrivelse her

Er det hvad du leder efter?

Kommentarer

  • At ' er absolut hvad jeg ' efter. Jeg ' har dog nogle underlige ting med vimscriptet. Hvis jeg skriver dit eksempel, ser det ud som det billede, du har sendt. Hvis jeg gemmer dit eksempel, skal du genstarte vim-redigering af den nye fil, det bliver forfærdeligt ude af whack. (vim 8.1.1186.) Endnu mærkeligere, hvis jeg derefter sletter alle linjer i en eksisterende fil, der viser underligt, og indsætter dens indhold igen, vises det ' stadig forkert. i.ibb.co/jvGMH6t/wtfvim.jpg
  • Brug af det i et faktisk fletningsscenarie udløser en endnu mærkeligere farve end billedet I sammenkædet, idet: conflictStart er korrekt fremhævet; ||||||| del af conflictMiddle i rødt, men resten af linjen i blå som den burde være; ======= i rødt; >>>>>>> .* linjen i gul (hvor gul kom ind i dette, der er ingen gul); og resten af filen, der overhovedet ikke skal være ', bliver plukket op som conflictEnd i henhold til SynStack() -funktionen fra stackoverflow.com/questions/30247603
  • Ligeledes ved hjælp af den aktuelle flet scenarie, hvis jeg kopierer / indsætter indholdet i en ny fil, vises det som forventet, men så snart det ' er gemt og vim genstartes, vises det forkert.
  • I et faktisk sammenlægningsscenarie kan du deaktivere den oprindelige diff-farve ved hjælp af :diffoff og kun efterlade filtypen ' s syntaks fremhævning. Jeg vil spille lidt for at se til din første sag.
  • Ack, undskyld, havde glemt, at jeg havde efterladt konflikt_markør-pluginet installeret efter at have prøvet det før mit indlæg, hvilket var modstridende og forårsagede problemet. Fjerner det og har ikke længere problemet.

Svar

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *