回答:
正確にはあなたが尋ねたものではありませんが、これは役立つかもしれません:Spliceプラグイン:3者間マージ中の競合を解決するためのVimプラグイン。Vimeoの素晴らしいスクリーンキャストがあります。
デフォルトのvimdiffを使用する場合は、関数を作成して、ウィンドウのバッファ番号を取得し、それらを使用して:diffget
2回呼び出すことができます。
*: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")
マッピングを使用して、この関数の呼び出しをで使用したキーに割り当てることができますkdiff3
。
このvimcastの詳細については、こちらをご覧ください。
Git競合マーカーがある行を削除できます。次の2つの方法は、次で始まるすべての行を削除します。
<<<<<<<
=======
>>>>>>>
方法1: コマンドを手動で入力して実行する
:g/^<\{7}\|^|\{7}\|^=\{7}\|^>\{7}/d
方法2: ユーザー定義コマンドの実装
"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とdiffputはどちらか一方のブランチのみを選択します。したがって、上記以外の唯一の実際の解決策は、手動で両方のファイルをヤンクして作業コピーに貼り付けることです。