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

键盘快捷键:

do -获取从其他窗口到当前窗口的更改。 dp -将当前窗口的更改放入另一个窗口。 c -跳转到下一个更改。 [c -跳转到之前的更改。 Ctrl+W, W -切换到另一个分割窗口(Ctrl +W, Ctrl+W做同样的事情,以防你稍后放开Ctrl键)

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

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


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

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

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

Zo ->打开折叠。 Zc ->闭合折叠。

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

Zr ->降低折叠水平。 请再折一层。

甚至:

完全减少折叠,我说!。 最多!

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

set diffopt=<TAB>,然后更新或添加上下文:n。

您还应该看看用户手册中关于diff的部分。

实际上,如果你按Ctrl + W, W,你就不需要添加额外的Ctrl。它的作用是一样的。

设置vimdiff为忽略大小写。

开始vim diff with

 gvim -d main.sql backup.sql &

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

:set diffopt+=icase

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

Ctrl + W, W可以用于从一个窗格导航到另一个窗格。

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

使用Shift + V突出显示一行,并使用向上或向下键选择所需的代码段,然后从下面所写的步骤3继续将更改粘贴到另一个窗格中。 使用可视模式,然后更改它 按v,进入可视模式 使用向上或向下键选择所需的代码 按Esc 现在使用yy复制或dd切割更改 按Ctrl + W, W导航到窗格2 按P将更改粘贴到需要的位置