我如何在Vimdiff中展开/折叠一个diff部分?

我今天开始使用vimdiff,并想做一些我在基于Windows的差异编辑器上认为理所当然的事情(比如展开/折叠一个差异部分,有完整的文件展开/只有差异,上面或下面有三个上下文行,等等)。我目前只知道以下命令:

键盘快捷键:

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

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

  • c -跳转到下一个更改。

  • c -跳转到之前的更改。

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

有人能给我指出正确的方向吗?这样我就可以复制类似的功能了。

例如,如果我能围绕差分展开/折叠直线,那就太好了。

150190 次浏览

除了你提到的这些,我在不同意见时只经常使用以下几点:

  • :diffupdate :diffu ->重新计算diff。当做了几次更改后,Vim不再显示最小的更改时,它很有用。注意,只有在vimdiff内部修改了文件时,它才有效。否则,使用:
  • :e来重新加载文件,如果它们在vimdiff之外被修改。
  • :set noscrollbind→暂时禁用两个缓冲区上的同步滚动,通过:set scrollbind和scrolling重新启用。

你要求的大部分是折叠:Vim用户手册关于折叠的章节。除了差分,我有时使用:

  • zo→开放的褶皱。
  • zc→亲密的褶皱。

但你可能会得到更好的服务:

  • zr→降低折叠水平。
  • zm→请再折叠一层。

甚至:

  • zR→完全减少折叠,我说!
  • zM→大多数!褶皱。

你要求的另一个东西,使用n行折叠,可以在Vim参考手册的选项部分找到,通过差异部分:

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

你还应该看看用户手册中关于差异的部分

实际上,如果执行Ctrl + WW,则不需要添加额外的Ctrl。它的作用是一样的。

设置vimdiff为忽略大小写。

开始vim diff with

 gvim -d main.sql backup.sql &

我发现一个文件的MySQL关键字是小写的,而另一个文件的关键字是大写的,几乎每一行都有差异。

:set diffopt+=icase

这将动态更新屏幕,你可以很容易地再次关闭它。

前面提到的Ctrl + WW可用于从窗格导航到窗格。

现在您可以单独选择一个特定的更改,并将其粘贴到另一个窗格,如下所示。这里我给了一个eg,好像我想把我的代码从窗格1到窗格2,目前我的光标在窗格1。

  • 使用转变 + V突出显示一行,并使用向上或向下键选择您需要的代码段,并从下面所写的步骤3继续将更改粘贴到另一个窗格。

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

    1. V。这将带你进入视觉模式
    2. 使用向上或向下键选择所需的代码
    3. 新闻Esc
    4. 现在使用yy来复制或dd来剪切更改
    5. Ctrl + WW导航到窗格2
    6. P将更改粘贴到需要的位置