315

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

键盘快捷键:

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

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

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

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

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

有人可以指出我正确的方向,以便我可以复制类似的功能吗?

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

4

4 回答 4

265

除了你提到的那些,我只在比较时经常使用以下内容:

  • :diffupdate :diffu-> 重新计算差异。当进行几次更改后,Vim 不再显示最小更改时,它很有用。请注意,它仅在文件已在 vimdiff 中修改时才有效。否则,使用:
  • :e如果文件已在 vimdiff 之外修改,则重新加载文件。
  • :set noscrollbind-> 暂时禁用两个缓冲区的同时滚动,重新启用:set scrollbind和滚动。

您要求的大部分内容都是折叠:Vim 用户手册的折叠章节。在差异之外,我有时会使用:

  • zo-> 打开折叠。
  • zc-> 关闭折叠。

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

  • zr-> 降低折叠级别。
  • zm-> 请再增加一个折叠级别。

甚至:

  • zR-> 完全减少折叠,我说过!
  • zM-> 折叠大多数!。

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

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

您还应该查看diff 的用户手册部分

于 2011-03-13T21:41:22.693 回答
5

将 vimdiff 设置为忽略大小写。

已经开始使用 vim diff

 gvim -d main.sql backup.sql &

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

:set diffopt+=icase

这会动态更新屏幕,您可以轻松地再次将其关闭。

于 2014-08-20T10:55:21.523 回答
4

实际上,如果您这样做Ctrl+ W, W,则不需要添加额外的Ctrl. 它做同样的事情。

于 2013-01-17T22:44:20.340 回答
0

Ctrl+ WW如前所述,可用于在窗格之间导航。

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

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

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

    1. V。这将带您进入视觉模式
    2. 使用向上或向下键选择所需的代码
    3. Esc
    4. 现在用于yy复制或dd剪切更改
    5. Ctrl+ W,W导航到pane2
    6. 按下P以将更改粘贴到您需要的位置
于 2016-05-04T06:48:46.687 回答