VIM:在我们/他们的冲突块之间进行选择



这个问题是关于如何在像这样的冲突块上为选择我们或他们的映射提供有用的映射

<<<<<<< HEAD
ours code
=======
theirs code
>>>>>>> branch

只需将以下代码粘贴到~/.virc中,并使用,fc,so,st。(完整.vmrc,位于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>

我为此编写了一个插件: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.

最新更新