Dacă git efectuează o îmbinare în trei direcții și are un conflict nu se poate rezolva, marchează acea zonă a fișierului astfel:

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

Există o modalitate (și, dacă da, cum) să se schimbe culoarea de fundal a acestor 3 „secțiuni”:

  • <<<<<<< HEAD prin linia dinaintea ||||||| parent of ...
  • ||||||| parent of ... prin linia dinaintea =======
  • Linia după ======= prin linia >>>>>>> ...

(EDIT: întrebarea se învârte în jurul valorii de dacă există o modalitate de a evidenția anumite linii în funcție de alte linii. xyz de obicei nu ar fi evidențiat, dar din moment ce se află între <<<<<<< și ||||||| ar fi evidențiat.)

Cu posibilitatea de a gestiona și alte seturi de markeri de conflict?

Folosind cea mai recentă versiune de vim disponibilă în momentul unui comentariu. Deci, de acum, 8.1.1183.

Folosesc un fundal negru și 256 de culori în terminalul meu. Mă gândeam că ar fi frumos să dau aceste secțiuni folosind cele mai întunecate culori R / G / B / C / M / Y, așa că nu au cauzat o mare problemă cu evidențierea sintaxei. (Vorbind despre culorile ANSI 52, 22, 17, 23, 53 și 58 – nu 1-6 culori.)

Comentarii

  • O simplă interogare de căutare pe Google ar fi fost suficientă: github.com/rhysd/conflict-marker.vim
  • @klaus, ar fi trebuit să menționez că m-am uitat la acel plugin în timp ce făceam o mulțime de căutarea pe google. Acest plugin evidențiază marcatorii de conflict înșiși. Nu ' nu evidențiază, de asemenea, textul cu care sunt asociați markerii, pe alte linii. Cred că marea problemă la îndemână este dacă există ' este un mod de a evidenția anumite linii în funcție de alte linii. Adică, în exemplul meu, xyz nu ar fi de obicei evidențiat, dar din moment ce ' s între <<<<<<< și ||||||| Aș dori să fie evidențiat.

Răspuns

În configurația Vim, puteți face următoarele (modificați culori și stil pe placul dvs.):

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 

Care se redă după cum urmează:

introduceți descrierea imaginii aici

Este ceea ce căutați?

Comentarii

  • Asta ' este absolut ceea ce am ' m după. Cu toate acestea, ' am unele ciudățenii cu vimscript. Dacă introduc exemplul dvs., arată exact ca imaginea pe care ați postat-o. Dacă vă salvăm exemplul, reporniți editarea vim a noului fișier, acesta devine oribil. (vim 8.1.1186.) Chiar mai ciudat, dacă șterg apoi toate liniile dintr-un fișier existent care se afișează ciudat și re-lipesc conținutul acestuia, ' se afișează în continuare greșit. i.ibb.co/jvGMH6t/wtfvim.jpg
  • Utilizarea acestuia într-un scenariu de îmbinare efectiv declanșează o colorare chiar mai ciudată decât imaginea I legat, cu: conflictStart fiind evidențiat corect; partea ||||||| a conflictMiddle în roșu, dar restul liniei în albastru așa cum ar trebui; ======= în roșu; linia >>>>>>> .* în galben (de unde a intrat galbenul în acesta, nu există galben); și restul fișierului care nu ar trebui să ' să fie deloc parte verde a conflictului, fiind preluat în continuare ca conflictEnd funcția SynStack() de la stackoverflow.com/questions/30247603
  • La fel, utilizând actualul combinați scenariul, dacă copiez / lipesc conținutul într-un fișier nou, acesta se afișează așa cum era de așteptat, dar de îndată ce ' este salvat și vim este repornit, se afișează greșit.
  • Într-un scenariu de îmbinare real, puteți dezactiva colorarea diferită originală utilizând :diffoff, lăsând doar tipul de fișier ' s evidențierea sintaxei. Voi juca puțin să văd pentru primul dvs. caz.
  • Ack, îmi pare rău, am uitat că am lăsat pluginul conflict_marker instalat după ce l-am încercat înainte de postarea mea, care era în conflict și cauzează problema. Îndepărtăm acest lucru și nu mai avem această problemă.

Răspuns

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *