VIM:选择我们/他们冲突块

3
这个问题是关于如何在冲突块上拥有有用的映射,例如选择我们的或他们的。
<<<<<<< HEAD
ours code
=======
theirs code
>>>>>>> branch

2
你需要用适当的答案来解决它。请参阅FAQ。我会给你一些时间自己去做 :) - sehe
你可以回答自己的问题并接受它。 - Luc M
2个回答

4

只需将以下代码粘贴到您的 ~/.vimrc 文件中,然后使用 ,fc,so,st 命令即可。(完整的 .vimrc 文件请参见https://github.com/brauliobo/gitconfig)

""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" Find Nearest
" Source: http://vim.1045645.n5.nabble.com/find-closest-occurrence-in-both-directions-td1183340.html
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""                                                        
function! FindNearest(pattern)
  let @/=a:pattern
  let b:prev = search(a:pattern, 'bncW')
  if b:prev
    let b:next = search(a:pattern, 'ncW')
    if b:next
      let b:cur = line('.')
      if b:cur - b:prev == b:next - b:cur
        " on a match
      elseif b:cur - b:prev < b:next - b:cur
        ?
      else
        /
      endif
    else
      ?
    endif
  else
    /
  endif
endfunction

command! -nargs=1 FN call FindNearest(<q-args>)
nmap \ :FN<space>

""" Select between conflict blocks
" select ours
nmap <leader>so \<<<<<<<<CR>dd/=======<CR>V/>>>>>>><CR>d
" select theirs
nmap <leader>st \<<<<<<<<CR>V/=======<CR>dk/>>>>>>><CR>dd
" find next conflict
nmap <leader>fc /<<<<<<<<CR>

3

我已经为此编写了一个插件:ConflictMotions。它提供以下映射:

    ]x     Go to [count] next start of a conflict.
    ]X     Go to [count] next end of a conflict.
    [x     Go to [count] previous start of a conflict.
    [X     Go to [count] previous end of a conflict.
    ]z     Go to [count] next conflict marker.
    [z     Go to [count] previous conflict marker.

    ax     "a conflict" text object, select [count] conflicts,
           including the conflict markers.
    az     "a conflict section" text object, select [count]
           sections (i.e. either ours, theirs, or base) including
           the conflict marker above, and in the case of "theirs"
           changes, also the ending conflict marker below.
    iz     "inner conflict section" text object, select current
           section (i.e. either ours, theirs, or base) without
           the surrounding conflict markers.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接