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

标签 linux vim diff command-line-interface vimdiff

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

键盘快捷键:

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

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

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

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

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

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

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

最佳答案

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

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

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

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

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

  • zr -> 降低折叠级别。
  • zm -> 请再折叠一层。

甚至:

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

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

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

您还应该看看 user manual section on diff .

关于linux - 如何在 Vimdiff 中展开/折叠差异部分?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5288875/

相关文章:

php - 仅通过检查键来递归删除数组及其子元素的元素

linux - Ubuntu中的Prolog编程

linux - Composer 更新不运行

python - 如何设置我创建的任何 Vim 文件默认附加 #!/usr/bin/env python

xcode - 在 Xcode diff 中交换文件修订

tfs - 您如何获得与工作项关联的所有更改的差异?

linux - 提取两个文件之间的差异值

linux - ssh 命令输出以保存在 shell 脚本中的文本文件中

go - 如何在 Go 终端的一部分中使用 Vim

vim - 如何在 vim 中处理 csv 文件