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

TCS*_*rad 291 linux vim diff vimdiff command-line-interface

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

键盘快捷键:

  • do - 从其他窗口更改到当前窗口.

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

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

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

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

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

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

nin*_*alj 235

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

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

您要求的大多数是折叠:vim用户手册关于折叠的章节.在差异之外,我有时会使用:

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

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

  • zr - >降低折叠水平.
  • zm - >请多一个折叠级别.

甚至:

  • zR - >完全减少折叠,我说!
  • zM - >折叠最多!

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

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

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


zza*_*per 5

将 vimdiff 设置为忽略大小写。

已经开始 vim diff

 gvim -d main.sql backup.sql &
Run Code Online (Sandbox Code Playgroud)

我发现令人讨厌的是,一个文件的 MySQL 关键字是小写的,而另一个大写的文件几乎每行都显示差异。

:set diffopt+=icase
Run Code Online (Sandbox Code Playgroud)

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