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

  • Sarebbe bastata una semplice query di ricerca su Google: github.com/rhysd/conflict-marker.vim
  • @klaus, avrei dovuto menzionare che ho guardato quel plugin mentre facevo molte ricerca google. Quel plug-in evidenzia gli stessi marcatori di conflitto. Non ' evidenzia anche il testo a cui sono associati questi marcatori, su altre righe. Penso che il grosso problema in questione sia se cè ' è un modo per evidenziare determinate righe a seconda di altre righe. Ciò significa che, nel mio esempio, xyz normalmente non viene evidenziato, ma poiché ' tra <<<<<<< e ||||||| Vorrei che fosse evidenziato.

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:

inserisci qui la descrizione dellimmagine

È 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 di conflictMiddle 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 come conflictEnd secondo la funzione SynStack() 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

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *