Yanıtlar:
Tam olarak sorduğunuz gibi değil, ancak yararlı olabilir: Splice eklentisi: üç yönlü birleştirme sırasında çakışmaları çözmek için bir Vim eklentisi . Vimeo'da güzel bir demo screencast var .
Varsayılan vimdiff ile yapışacaksanız, vekil pencereler için arabellek numarasını almak ve bunları :diffget
iki kez aramak için kullanabilirsiniz :
*: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")
Kullandığınız tuşlara bu işleve çağrı atamak için bir eşleme kullanabilirler kdiff3
.
Bu vimcast hakkında daha fazla bilgi bulabilirsiniz .
yank ve put herhangi bir eklenti veya ekstra işlev olmadan çalışabilir, ancak belki de dgveyadp
Üst bitlerden gerekli bitleri kopyalayın ve birleştirilen arabellekteki doğru noktaya yapıştırın. Bu, her şeyden çok bir fark bloğunun sadece bir parçasını istiyorsanız da yararlıdır.
Bazen, Vim'i fark vurgulamayı güncellemeye zorlamanız gerekebilir :diffupdate
.
Git çakışma işaretçileri olan satırları silebilirsiniz. Aşağıdaki iki yöntem, ile başlayan tüm satırları siler:
<<<<<<<
=======
>>>>>>>
Yöntem 1: El ile Komut Girme ve Yürütme
:g/^<\{7}\|^|\{7}\|^=\{7}\|^>\{7}/d
Yöntem 2: Kullanıcı Tanımlı Komut Uygulama
"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 ve diffput sadece bir dal veya diğerini seçecektir. Dolayısıyla, yukarıda verilenin dışındaki tek gerçek çözüm, manuel olarak her iki dosyadan çalışma kopyasına çekip yapıştırmaktır.