Se git
sta eseguendo ununione a 3 vie e presenta un conflitto non può essere risolto, segna quellarea del file in questo modo:
No unresolvable conflicts here <<<<<<< HEAD xyz ||||||| parent of ... abc ======= 123 >>>>>>> ...
Cè un modo (e, se sì, come) cambiare il colore di sfondo di queste 3 “sezioni”:
-
<<<<<<< HEAD
attraverso la riga prima di||||||| parent of ...
-
||||||| parent of ...
attraverso la riga prima di=======
- La riga dopo
=======
attraverso la riga>>>>>>> ...
(EDIT: la domanda ruota intorno a se cè “un modo per evidenziare certe righe a seconda di altre righe. xyz
normalmente non viene evidenziato, ma poiché si trova tra <<<<<<<
e |||||||
sarebbe evidenziato.)
Riuscendo a gestire anche altri set di indicatori di conflitto?
Utilizzando la versione più recente di vim disponibile al momento di un commento. Quindi, per ora, 8.1.1183.
Uso uno sfondo nero e 256 colori nel mio terminale. Stavo pensando che sarebbe stato bello dare queste sezioni usando i colori R / G / B / C / M / Y più scuri, quindi non hanno causato molti problemi con levidenziazione della sintassi (parlando dei colori ANSI 52, 22, 17, 23, 53 e 58, non i colori da 1 a 6).
Commenti
Risposta
Nella configurazione di Vim, puoi fare quanto segue (cambiare il colori e stile a proprio piacimento):
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
che viene visualizzato come segue:
È quello che cerchi?
Commenti
- Questo ' è assolutamente quello che ' m dopo. Tuttavia ' ho delle stranezze con vimscript. Se digito il tuo esempio, sembra proprio come limmagine che hai pubblicato. Se salvo il tuo esempio, quindi riavvio vim modificando il nuovo file, diventa orribilmente fuori controllo. (vim 8.1.1186.) Ancora più strano, se poi elimino tutte le righe di un file esistente che viene visualizzato in modo strano e ne incollo nuovamente il contenuto, ' continua a essere sbagliato. i.ibb.co/jvGMH6t/wtfvim.jpg
- Il suo utilizzo in uno scenario di unione reale attiva una colorazione ancora più strana rispetto allimmagine I collegato, con:
conflictStart
correttamente evidenziato; la|||||||
parte diconflictMiddle
in rosso ma il resto della linea in blu come dovrebbe essere; il=======
in rosso; la linea>>>>>>> .*
in giallo (dove è entrato il giallo, non cè il giallo); e il resto del file che non dovrebbe ' essere parte del conflitto in verde, essendo ancora rilevato comeconflictEnd
secondo la funzioneSynStack()
da stackoverflow.com/questions/30247603 - Allo stesso modo, utilizzando leffettivo scenario di unione, se copio / incollo il contenuto in un nuovo file, viene visualizzato come previsto, ma non appena ' viene salvato e vim viene riavviato, viene visualizzato in modo errato.
- In uno scenario di unione effettivo, puoi disabilitare la colorazione originale delle differenze utilizzando
:diffoff
, lasciando solo il tipo di file ' s evidenziazione della sintassi. Giocherò un po per vedere per il tuo primo caso. - Ack, scusa, mi ero dimenticato di aver lasciato installato il plug-in conflitto_marker dopo averlo provato prima del mio post, che era in conflitto e causava il problema. Rimuovendolo e non avendo più quel problema.
Rispondi
- conflitto-marker.vim può evidenziare i marcatori stessi; offre anche salti e modi per risolverli.
- il mio plugin ConflictDetection rileva ed evidenzia le intere sezioni (tramite levidenziazione della sintassi); un plug-in ConflictMotions associato offre movimenti e comandi per la risoluzione.
xyz
normalmente non viene evidenziato, ma poiché ' tra<<<<<<<
e|||||||
Vorrei che fosse evidenziato.