Réponses:
Pas exactement ce que vous avez demandé, mais peut trouver cela utile: Plugin Splice: un plugin Vim pour résoudre les conflits lors d'une fusion à trois . Il a un joli screencast de démonstration sur Vimeo .
Si vous allez vous en tenir au vimdiff par défaut, vous pouvez créer une fonction pour récupérer le numéro de tampon pour les fenêtres environnantes et les utiliser pour appeler :diffget
deux fois:
*: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")
Vous pouvez les utiliser à l'aide d'un mappage pour affecter un appel à cette fonction aux touches dans lesquelles vous avez été utilisé kdiff3
.
Vous pouvez trouver plus d'informations sur ce vimcast .
yank et put peuvent fonctionner sans plugins ni fonctions supplémentaires, même si c'est peut-être un peu moins pratique que dgoudp
Copiez simplement les bits nécessaires à partir des tampons parents et collez-les au bon endroit dans le tampon fusionné. Ceci est également utile si vous voulez juste une partie d'un bloc de diff plutôt que le tout.
Il se peut que vous deviez parfois forcer Vim à mettre à jour la mise en évidence des différences avec :diffupdate
.
Vous pouvez simplement supprimer les lignes avec des marqueurs de conflit Git. Les deux méthodes suivantes supprimeront toutes les lignes commençant par:
<<<<<<<
=======
>>>>>>>
Méthode 1: entrée et exécution manuelles d'une commande
:g/^<\{7}\|^|\{7}\|^=\{7}\|^>\{7}/d
Méthode 2: implémentation d'une commande définie par l'utilisateur
"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 et diffput ne choisiront qu'une branche ou l'autre. Donc, la seule vraie solution autre que celle donnée ci-dessus est de tirer manuellement et de coller des deux fichiers dans la copie de travail.