如何在Vimdiff中展开/折叠差异部分?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在Vimdiff中展开/折叠差异部分?相关的知识,希望对你有一定的参考价值。

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

键盘快捷键:

  • do - 从其他窗口更改到当前窗口。
  • dp - 将当前窗口中的更改放入另一个窗口。
  • ] c - 跳转到下一个更改。
  • [c - 跳转到之前的更改。
  • CTRL + W,w - 切换到另一个分割窗口(CTRL + W,CTRL + W执行相同的操作,以防稍后松开CTRL键)

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

例如,如果我可以扩展/折叠差异周围的线条会很好。

答案

除了你提到的那些之外,我只是在分析以下内容时经常使用:

  • :diffupdate :diffu - >重新计算差异,在进行多次更改后很有用vim不再显示微小的变化。请注意,只有在vimdiff中修改了文件后,它才有效。否则,使用: 如果文件在vimdiff之外被修改,:e将重新加载文件。
  • qazxsw poi - >暂时禁用两个缓冲区的同时滚动,由qazxsw poi启用并滚动。

您要求的大多数是折叠::set noscrollbind。在差异之外,我有时会使用:

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

  • zo - >降低折叠水平。
  • zc - >还有一个折叠级别。

甚至:

  • zr - >完全减少折叠,我说!
  • zm - >折叠最多!

您要求的另一件事,使用n行折叠,可以在zR,通过zM找到:

您还应该看看set diffopt=<TAB>

另一答案

设置vimdiff忽略大小写

开始使用vim diff

context:n

我发现令人讨厌的是,一个文件的mysql关键字是小写的,另一个是大写的,显示了几乎所有其他行的差异

user manual section on diff

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

另一答案

实际上,如果你做 gvim -d main.sql backup.sql & ,你将不需要添加额外的:set diffopt+=icase 。做同样的事情。

另一答案

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

现在,您可以单独选择一个特定的更改并将其粘贴到另一个窗格,如下所示。我正在给出一个例如,好像我想将我的代码片段从窗格1更改为窗格2,目前我的光标位于pane1

  • 使用Shift-v突出显示一行,然后使用向上或向下键选择所需的代码段,并从下面的步骤3继续将更改粘贴到另一个窗格中。
  • 使用可视模式,然后更改它 1单击“v”这将带您进入可视模式2使用向上或向下键选择所需的代码3单击,Esc'转义键4现在使用'yy'复制或'dd'切换更改5 do' ctrl + w,w'导航到pane2 6单击“p”将您的更改粘贴到您需要的位置

以上是关于如何在Vimdiff中展开/折叠差异部分?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Qt 中制作可展开/可折叠的部分小部件

html5 - 如何折叠和展开复杂的表格元素

如何在 Flutter 中折叠其他 ExpansionTile 元素

动态展开可折叠内容

展开和折叠 tableView Sections

折叠/展开代码块