Risposte:
Non esattamente quello che hai chiesto, ma potresti trovare questo utile: Plugin Splice: un plug-in Vim per la risoluzione dei conflitti durante l'unione a tre vie . Ha una bella demo screencast su Vimeo .
Se hai intenzione di rimanere con il vimdiff predefinito puoi creare una funzione per recuperare il numero di buffer per le finestre circostanti e usarli per chiamare :diffget
due volte:
*: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")
Potresti usare una mappatura per assegnare una chiamata a questa funzione ai tasti in cui sei stato usato kdiff3
.
Puoi trovare ulteriori informazioni su questo vimcast .
yank e put possono funzionare senza plug-in o funzioni extra, sebbene, forse, sia un po 'meno conveniente di dgodp
Basta copiare i bit necessari dai buffer principali e incollarli nel punto corretto nel buffer unito. Questo è utile anche se vuoi solo una parte di un blocco diff, piuttosto che il tutto.
A volte, potrebbe essere necessario forzare Vim per aggiornare l'evidenziazione differenziale con :diffupdate
.
Puoi semplicemente eliminare le linee con i marker di conflitto Git. I seguenti due metodi elimineranno tutte le righe che iniziano con:
<<<<<<<
=======
>>>>>>>
Metodo 1: inserimento manuale ed esecuzione di un comando
:g/^<\{7}\|^|\{7}\|^=\{7}\|^>\{7}/d
Metodo 2: implementazione di un comando definito dall'utente
"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 e diffput sceglieranno solo un ramo o l'altro. Quindi l'unica vera soluzione diversa da quella indicata sopra è quella di strappare e incollare manualmente da entrambi i file nella copia di lavoro.