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

时间:2011-03-13 10:44:59

标签: linux vim diff command-line-interface vimdiff

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

键盘快捷键:

  • d o - 从其他窗口更改到当前窗口。

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

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

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

  • CTRL + W w - 切换到另一个分割窗口( CTRL + < kbd> W , CTRL + W 做同样的事 事情,以防你稍后放开 CTRL

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

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

4 个答案:

答案 0 :(得分:227)

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

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

您要求的大部分内容都是折叠:vim user manual's chapter on folding。在差异之外,我有时会使用:

  • zo - &gt;打开折叠。
  • zc - &gt;关闭折叠。

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

  • zr - &gt;降低折叠水平。
  • zm - &gt;还有一个折叠级别。

甚至:

  • zR - &gt;完全减少折叠,我说!。
  • zM - &gt;折叠最多!。

您要求的另一件事,使用n行折叠,可以通过vim reference manual section on options section on diffuser manual section on diff找到:

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

您还应该查看{{3}}。

答案 1 :(得分:4)

设置vimdiff以忽略大小写

启动vim diff
 gvim -d main.sql backup.sql &

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

:set diffopt+=icase

动态更新屏幕&amp;你可以轻松地再次关闭它

答案 2 :(得分:3)

实际上,如果您执行Ctrl+W W,则无法添加额外的Ctrl。做同样的事情。

答案 3 :(得分:0)

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

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

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

  • 使用可视模式然后进行更改

    1点击&#39; v&#39;这将带您进入视觉模式 2使用向上或向下键选择所需的代码 3点击,Esc&#39;逃生钥匙 4现在使用&#39; yy&#39;复制或&#39; dd&#39;削减变化 5做&c; ctrl + w,w&#39;导航到pane2 6点击“&#39; p&#39;将您的更改粘贴到您需要的位置