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

  • Una simple consulta de búsqueda en Google hubiera sido suficiente: github.com/rhysd/conflict-marker.vim
  • @klaus, debería haber mencionado que miré ese complemento mientras hacía muchas búsqueda de Google. Ese complemento resalta los marcadores de conflicto en sí. No ' t también resalta el texto con el que están asociados esos marcadores, en otras líneas. Creo que el gran problema es si ' es una forma de resaltar ciertas líneas dependiendo de otras líneas. Es decir, en mi ejemplo, xyz normalmente no se resaltaría, pero como ' s entre <<<<<<< y ||||||| Me gustaría resaltarlo.

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:

ingrese la descripción de la imagen aquí

¿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 de conflictMiddle 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 como conflictEnd según la función SynStack() 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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *