Si git
está realizando una combinación de 3 vías y tiene un conflicto no se puede resolver, marca esa área del archivo de esta manera:
No unresolvable conflicts here <<<<<<< HEAD xyz ||||||| parent of ... abc ======= 123 >>>>>>> ...
¿Hay alguna forma (y, de ser así, cómo) de cambiar el color de fondo de estas 3 «secciones»:
-
<<<<<<< HEAD
a través de la línea antes de||||||| parent of ...
-
||||||| parent of ...
a través de la línea antes de=======
- La línea después de
=======
a través de la línea>>>>>>> ...
(EDITAR: La pregunta gira en torno a si hay una manera de resaltar ciertas líneas dependiendo de otras líneas. xyz
normalmente no estaría resaltado, pero como «está entre <<<<<<<
y |||||||
estaría resaltado.)
¿Con también poder manejar otros conjuntos de marcadores de conflicto?
Usando la versión más reciente de vim disponible en el momento de un comentario. Entonces, a partir de ahora, 8.1.1183.
Utilizo un fondo negro y 256 colores en mi terminal. Estaba pensando que sería bueno darle a estas secciones los colores R / G / B / C / M / Y más oscuros, para que no causaran muchos problemas con el resaltado de sintaxis. (Hablando de colores ANSI 52, 22, 17, 23, 53 y 58 (no los de 1 a 6 colores).
Comentarios
Responder
En su configuración de Vim, puede hacer lo siguiente (cambiar el colores y estilo a su gusto):
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
Que se muestra de la siguiente manera:
¿Es lo que busca?
Comentarios
- Eso ' es absolutamente lo que ' m después. Sin embargo, ' estoy teniendo algunas rarezas con el vimscript. Si escribo su ejemplo, se verá como la imagen que publicó. Si guardo su ejemplo y luego reinicio vim editando el nuevo archivo, se sale horriblemente de control. (vim 8.1.1186.) Aún más extraño, si luego borro todas las líneas en un archivo existente que se muestra de manera extraña y vuelvo a pegar su contenido, ' todavía se muestra mal. i.ibb.co/jvGMH6t/wtfvim.jpg
- Usarlo en un escenario de fusión real desencadena un color aún más extraño que la imagen que vinculado, con:
conflictStart
resaltado correctamente; la|||||||
parte deconflictMiddle
en rojo pero el resto de la línea en azul como debería ser; el=======
en rojo; la línea>>>>>>> .*
en amarillo (donde entró el amarillo, no hay amarillo); y el resto del archivo que no debería ' t ser parte del conflicto en verde, aún siendo recogido comoconflictEnd
según la funciónSynStack()
de stackoverflow.com/questions/30247603 - Del mismo modo, utilizando el Escenario de fusión, si copio / pego el contenido en un nuevo archivo, se muestra como se esperaba, pero tan pronto como ' s guardado y vim se reinicia, se muestra mal.
- En un escenario de fusión real, puede deshabilitar la coloración diferencial original usando
:diffoff
, dejando solo el tipo de archivo ' s resaltado de sintaxis. Jugaré un poco para ver tu primer caso. - Ack, lo siento, se me había olvidado que había dejado instalado el complemento conflict_marker después de probarlo antes de mi publicación, lo cual estaba en conflicto y causaba el problema. Eliminar eso y dejar de tener ese problema.
Responder
- conflict-marker.vim puede resaltar los marcadores mismos; también ofrece saltos y formas de resolverlos.
- mi propio complemento ConflictDetection detecta y resalta las secciones completas (mediante el resaltado de sintaxis); un complemento ConflictMotions complementario ofrece movimientos y comandos para su resolución.
xyz
normalmente no se resaltaría, pero como ' s entre<<<<<<<
y|||||||
Me gustaría resaltarlo.