Respuestas:
No es exactamente lo que solicitó, pero puede resultarle útil: complemento de empalme: un complemento de Vim para resolver conflictos durante la fusión a tres bandas . Tiene un bonito screencast de demostración en Vimeo .
Si va a seguir con el vimdiff predeterminado, puede crear una función para recuperar el número de búfer para las ventanas circundantes y usarlas para llamar :diffget
dos veces:
*:diffg* *:diffget*
:[range]diffg[et] [bufspec]
Modify the current buffer to undo difference with another
buffer. If [bufspec] is given, that buffer is used. If
[bufspec] refers to the current buffer then nothing happens.
Otherwise this only works if there is one other buffer in diff
(...)
The [bufspec] argument above can be a buffer number, a pattern for a buffer
name or a part of a buffer name. Examples:
:diffget Use the other buffer which is in diff mode
:diffget 3 Use buffer 3
:diffget v2 Use the buffer which matches "v2" and is in
diff mode (e.g., "file.c.v2")
Podría usar una asignación para asignar una llamada a esta función a las teclas en las que se utilizó kdiff3
.
Puede encontrar más información sobre este vimcast .
yank y put pueden funcionar sin complementos ni funciones adicionales, aunque es, quizás, un poco menos conveniente que dgodp
Simplemente copie los bits necesarios de las memorias intermedias principales y péguelos en el lugar correcto en la memoria intermedia combinada. Esto también es útil si desea solo una parte de un bloque diff, en lugar de todo.
Es posible que, a veces, necesite forzar a Vim a actualizar el resaltado de diferencias con :diffupdate
.
Simplemente puede eliminar las líneas con marcadores de conflicto Git. Los siguientes dos métodos eliminarán todas las líneas que comienzan con:
<<<<<<<
=======
>>>>>>>
Método 1: ingresar y ejecutar manualmente un comando
:g/^<\{7}\|^|\{7}\|^=\{7}\|^>\{7}/d
Método 2: Implementar un comando definido por el usuario
"Delete all Git conflict markers
"Creates the command :GremoveConflictMarkers
function! RemoveConflictMarkers() range
echom a:firstline.'-'.a:lastline
execute a:firstline.','.a:lastline . ' g/^<\{7}\|^|\{7}\|^=\{7}\|^>\{7}/d'
endfunction
"-range=% default is whole file
command! -range=% GremoveConflictMarkers <line1>,<line2>call RemoveConflictMarkers()
Vim diffget y diffput solo elegirán una rama u otra. Por lo tanto, la única solución real que no sea la anterior es tirar y pegar manualmente de ambos archivos en la copia de trabajo.