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
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ě:
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|||||||
částiconflictMiddle
č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 jakoconflictEnd
podle funkceSynStack()
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
- conflict-marker.vim může zvýraznit samotné značky; nabízí také skoky a způsoby, jak je vyřešit.
- můj vlastní modul ConflictDetection detekuje a zvýrazňuje celé sekce (pomocí zvýraznění syntaxe); doprovodný plugin ConflictMotions nabízí pohyby a příkazy k rozlišení.
xyz
obvykle nebyl zvýrazněn, ale protože ' s mezi<<<<<<<
a|||||||
Chtěl bych to zdůraznit.