Jawaban:
Tidak persis seperti yang Anda tanyakan, tetapi mungkin menemukan ini berguna: Splice plugin: plugin Vim untuk menyelesaikan konflik selama penggabungan tiga arah . Ini memiliki demo layar yang bagus di Vimeo .
Jika Anda akan tetap menggunakan vimdiff default, Anda dapat membuat fungsi untuk mengambil nomor buffer untuk windows surronding dan menggunakannya untuk memanggil :diffget
dua kali:
*: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")
Anda dapat menggunakan pemetaan untuk menetapkan panggilan ke fungsi ini ke tombol yang Anda gunakan kdiff3
.
Anda dapat menemukan informasi lebih lanjut tentang siaran ini .
yank dan put dapat bekerja tanpa plugin atau fungsi tambahan, meskipun mungkin sedikit kurang nyaman daripada dgataudp
Cukup salin bit yang diperlukan dari buffer induk dan tempel ke tempat yang benar di buffer gabungan. Ini juga berguna jika Anda ingin hanya bagian dari blok diff, daripada semuanya.
Anda mungkin, kadang-kadang, perlu memaksa Vim untuk memperbarui sorotan berbeda dengan :diffupdate
.
Anda bisa menghapus baris dengan penanda konflik Git. Dua metode berikut akan menghapus semua baris yang dimulai dengan:
<<<<<<<
=======
>>>>>>>
Metode 1: Secara Manual Memasukkan dan Melaksanakan Perintah
:g/^<\{7}\|^|\{7}\|^=\{7}\|^>\{7}/d
Metode 2: Menerapkan Perintah Buatan Pengguna
"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 dan diffput hanya akan memilih satu cabang atau yang lain. Jadi satu-satunya solusi nyata selain yang diberikan di atas adalah secara manual menarik dan menempel dari kedua file ke dalam copy pekerjaan.