如何在Vimdiff中展开/折叠diff区段?

我今天开始使用vimdiff,想要做一些基于Windows的差异编辑器(比如展开/折叠差异部分,具有完整的文件扩展/只与上面的3个上下文线差异或以下等)。 我目前只知道下面的命令:

键盘快捷键:

  • do – 从其他窗口获取更改到当前窗口。

  • dp – 将当前窗口的更改放入另一个窗口。

  • ]c – 跳转到下一个更改。

  • [c – 跳转到上一个更改。

  • Ctrl + Ww – 切换到另一个分割窗口(CTRL-W CTRL-W做同样的事情,以防你稍后放开CTRL键)

有人能指点我正确的方向,所以我可以复制类似的function?

例如,如果我可以展开/折叠差异线,那就太好了。

除了你提到的那些,我只是经常使用以下几点:

  • :diffupdate :diffu – >重新计算差异,在进行多次更改后很有用vim的不再显示最小的变化。 请注意,只有在vimdiff文件被修改的情况下才有效。 否则,使用:
    • :e如果在vimdiff之外修改了文件,则重新加载文件。
  • :set noscrollbind – >暂时禁用两个缓冲区同时滚动,重新启用:set scrollbind和滚动。

大部分你所要求的是折叠: vim用户手册关于折叠的章节 。 有时我会用diff:

  • zo – >打开折叠。
  • zc – >closures折叠。

但你可能会更好地服务于:

  • zr – >降低折叠水平。
  • zm – >多一个折叠水平,请。

甚至:

  • zR – >完全减less折叠,我说!
  • zM – >折叠最多!

你要求的另一件事情,使用n行折叠,可以在vim参考手册的选项部分find,通过diff :

  • set diffopt=<TAB> ,然后更新或添加context:n

你也应该看看差异的用户手册部分 。

设置vimdiff忽略大小写

开始vim差异

  gvim -d main.sql backup.sql & 

我发现,一个文件有一个文件的小写字母的关键字,另一个大写字母在几乎所有其他行上显示差异

 :set diffopt+=icase 

这dynamic更新屏幕,你可以轻松地再次closures它

其实如果你做Ctrl+WW ,你不需要添加额外的Ctrl 。 做同样的事情。

ctrl + w,w如上所述可用于从窗格到窗格的导航。

现在,您可以单独select一个特定的更改,并将其粘贴到另一个窗格,如下所示。在这里,我给出了一个例如,如果我想将我的代码从窗格1更改为窗格2,当前我的光标在窗格1

  • 使用Shift-v突出显示一行,并使用向上或向下键select所需的代码段,然后从下面的第3步继续,将更改粘贴到其他窗格中。

  • 使用视觉模式,然后改变它

    1点击'v'这将把你带到视觉模式2使用向上或向下键来select你所需的代码3点击,Esc的退出键4现在使用'yy'来复制或'dd'来剪切变化5' ctrl + w,w'导航到窗格2 6单击“p”button,粘贴您所需的更改