Pokud git provádí třícestné sloučení a má konflikt nemůže to vyřešit, označí tuto oblast souboru takto:

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

Existuje způsob (a pokud ano, jak) změnit barva pozadí těchto 3 „sekcí“:

  • <<<<<<< HEAD přes řádek před ||||||| parent of ...
  • ||||||| parent of ... přes řádek před =======
  • řádek za ======= skrz řádek >>>>>>> ...

(EDIT: Otázka se točí kolem toho, zda existuje způsob, jak zvýraznit určité řádky v závislosti na jiných řádky. xyz by obvykle nebyly zvýrazněny, ale protože je mezi <<<<<<< a ||||||| bylo by to zvýrazněno.)

Se schopností zvládnout i další sady značek konfliktů?

Používání nejnovější verze vim dostupné v době komentáře. Od nynějška 8.1.1183.

V terminálu používám černé pozadí a 256 barev. Přemýšlel jsem, že by bylo hezké dát tyto sekce pomocí nejtmavších barev R / G / B / C / M / Y, takže nezpůsobily mnoho problémů se zvýrazněním syntaxe. (Mluvení o barvách ANSI 52, 22, 17, 23, 53 a 58 – ne 1-6 barev.)

Komentáře

  • Stačil by jednoduchý vyhledávací dotaz Google: github.com/rhysd/conflict-marker.vim
  • @klaus, měl jsem zmínit, že jsem se na ten plugin podíval, když dělal spoustu vyhledávání google. Tento plugin zvýrazňuje samotné značky konfliktů. Na ostatních řádcích také ' nezvýrazňuje text, se kterým jsou tyto značky spojeny. Myslím, že hlavní problém je, pokud existuje ' je způsob, jak zvýraznit určité řádky v závislosti na jiných řádcích. To znamená, že v mém příkladu by xyz obvykle nebyl zvýrazněn, ale protože ' s mezi <<<<<<< a ||||||| Chtěl bych to zdůraznit.

Odpovědět

Ve své konfiguraci Vim můžete provést následující (změnit barvy a styl podle vašich představ):

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 

Která se vykreslí následovně:

sem zadejte popis obrázku

Je to po čem jste?

Komentáře

  • To je ' absolutně to, co jsem ' m poté. ' ale s vimscriptem mám nějaké zvláštnosti. Pokud zadám váš příklad, vypadá to jako obrázek, který jste zveřejnili. Pokud uložím váš příklad a poté restartuji vim při úpravách nového souboru, bude to strašně nepříjemné. (vim 8.1.1186.) Ještě divnější, když odstraním všechny řádky v existujícím souboru zobrazujícím divně a znovu vložím jeho obsah, ' se stále zobrazuje špatně. i.ibb.co/jvGMH6t/wtfvim.jpg
  • Jeho použití ve scénáři skutečného sloučení spouští ještě divnější zbarvení než obrázek I propojeno, přičemž: conflictStart je správně zvýrazněno; část ||||||| části conflictMiddle červeně, ale zbytek řádku modře, jak má být; ======= červeně; řádek >>>>>>> .* žlutě (kde do toho přišla žlutá, není tam žádná žlutá); a zbytek souboru, který by ' t neměl být vůbec součástí konfliktu zeleně, je stále vyzvedáván jako conflictEnd podle funkce SynStack() z stackoverflow.com/questions/30247603
  • Podobně s použitím skutečného scénář sloučení, pokud zkopíruji / vložím obsah do nového souboru, zobrazí se podle očekávání, ale jakmile se ' uloží a restartuje vim, zobrazí se špatně.
  • Ve scénáři skutečného sloučení můžete deaktivovat původní zbarvení rozdílu pomocí :diffoff a ponechat pouze typ souboru ' s zvýraznění syntaxe. Trochu se podívám na váš první případ.
  • Ack, promiň, zapomněl jsem, že jsem nechal nainstalovaný plugin conflict_marker po vyzkoušení před mým příspěvkem, což bylo v rozporu a způsobilo problém. Odstraníme to a už nebudu mít tento problém.

Odpovědět

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *