如何在Vim中同步查看和滚动垂直分割的缓冲区?

问题描述:

我在Vim中有两个垂直分离的缓冲区,显示两个单独的文件,我想同时显示和滚动。在两个缓冲区的顶部都有:set scrollbind,我可以取消滚动部分(所以当我在一个缓冲区中打zt时,当前行在两个缓冲区中跳转到顶端),但不幸的是,显示不同步。如何在Vim中同步查看和滚动垂直分割的缓冲区?

这意味着如果文件中的行长度不同,则两个缓冲区将不会在视觉上对齐。我希望Vim显示额外的换行符,以确保长包线不会干扰两个缓冲区的垂直同步显示。

谢谢!

+0

你打算比较一下吗?你最好使用'diff'来完成这样的任务 – Andrew 2010-11-08 01:15:49

+0

@Andrew:'vimdiff',对吧? – Cascabel 2010-11-09 00:15:50

+0

@Andrew:不,我要编辑它们。双语文本。 – 2010-11-09 04:12:09

您可以使用

:set nowrap 

要被包裹停止长线条,让你的缓存是同步的。不完全是你问的,但接近。

+0

谢谢。这些文件有很长的行(用不同的语言写同一本书),所以我认为我必须包装。 – 2010-11-09 04:14:58

除了在两个缓冲区中设置scrollbind外,还需要发出命令:syncbind。这应该同步滚动。我不知道如果你正在包装线条,并且这两个文件有不同长度的线条,它是否会完美地完成它。但如果你打开包装,我认为它应该保持在相同的行号。

+0

谢谢。我通常手动在每个缓冲区中调用'scrollbind',所以尽管':syncbind'可以节省一些击键的时间,但在存在不等长的包装线时我仍然存在对齐问题。 – 2010-11-09 04:18:14

+4

Syncbind不是scrollbind的替代方法,它在两个窗口都打开scrollbind时会更改行为。例如,如果我有两个垂直窗口打开同一个文件,但有一个窗口狭窄,所以换行,我可以让线条总是“排队”的唯一方法是(我认为)通过发出syncbind。当然,线条还是不能完美排列(除非在差异视图中添加空行),但是当我向上或向下滚动一个窗口时,窗口顶部的两条线始终完全匹配。不知道这对你来说是否够用,但是非常*的线条总是匹配。 – 2010-11-09 18:29:56

我怀疑Vim是否真的适合于垂直缓冲区,如果你需要将它们包装起来,它们的文本行长度很长,然而,我是一个真正的Vim爱好者。

我可以建议你的是:

  • 用vim,插入行号的每一行的前面,和双空间文件(:g/^/put _)。如果您正在翻译,行号不应该真正受到更改?
  • 使用具有图形技巧的Kompare或Meld打开两个文件,以平滑绑定不等长度的行。然后调整颜色方案,使其表现得像是不是差异化工具。