gpt4 book ai didi

vim - 解决vim中的合并冲突

转载 作者:行者123 更新时间:2023-12-03 18:45:32 28 4
gpt4 key购买 nike

vs-code 具有解决合并冲突的惊人功能,如图所示。

image source google

我们可以轻松地选择 currentincomingboth 更改..
但是在 vim 的情况下,我们必须手动执行它,这在文件大小很大时会出现问题......在 vim? 中有没有什么好的方法可以做到这一点

最佳答案

您的问题中有几件事不清楚:

  • 您如何“选择当前、传入或两者”?鼠标点击?
  • 你觉得 Vim 有什么问题?

  • 无论如何,以下是基本合并冲突解决方案的处理方式:
    $ git mergetool --tool vimdiff

    Three-way merge in Vim
  • 左上角的窗口称为“LOCAL”,显示文件在您要合并到的分支中。这就是屏​​幕截图中所谓的“当前”。
  • 名为“REMOTE”的右上角窗口显示文件,因为它位于您正在合并的分支中。这就是屏​​幕截图中所谓的“传入”。
  • 顶部中心窗口,称为“BASE”,显示文件在进行上述任何更改之前的状态。我在你的截图中看不到它。
  • 底部窗口显示文件的当前状态,带有冲突标记。这相当于您当前的 View 。除非您不必编辑冲突标记。

  • 用法非常简单:
  • 跳转到下一个更改(不是“冲突”),按 ]c[c 为前一个更改,
  • 选择 LOCAL 更改,执行 :diffget LOCAL(或简称 :diffg L),
  • 选择 BASE 更改,执行 :diffg B ,
  • 选择远程更改,执行 :diffg R ,
  • 选择两个更改,删除冲突标记,因为没有内置命令。

  • 如果您仍然觉得它太“手动”,您可以简单地制作自己的映射:
    " choose LOCAL
    nnoremap <Left> :diffget LOCAL<Bar>diffupdate<CR>
    " choose REMOTE
    nnoremap <Right> :diffget REMOTE<Bar>diffupdate<CR>
    " choose BASE
    nnoremap <Up> :diffget BASE<Bar>diffupdate<CR>
    " choose both
    nnoremap <Down> :/>>>>>>>/;?<<<<<<<?,.g/^\(<<<<<<<\\|=======\\|>>>>>>>\)/d<CR>

    关于vim - 解决vim中的合并冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51795774/

    28 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com