2010-11-08 78 views
27

我在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

回答

1

您可以使用

:set nowrap 

要被包裹停止長線條,讓你的緩存是同步的。不完全是你問的,但接近。

+0

謝謝。這些文件有很長的行(用不同的語言寫同一本書),所以我認爲我必須包裝。 – 2010-11-09 04:14:58

12

除了在兩個緩衝區中設置scrollbind外,還需要發出命令:syncbind。這應該同步滾動。我不知道如果你正在包裝線條,並且這兩個文件有不同長度的線條,它是否會完美地完成它。但如果你打開包裝,我認爲它應該保持在相同的行號。

+0

謝謝。我通常手動在每個緩衝區中調用'scrollbind',所以儘管':syncbind'可以節省一些擊鍵的時間,但在存在不等長的包裝線時我仍然存在對齊問題。 – 2010-11-09 04:18:14

+4

Syncbind不是scrollbind的替代方法,它在兩個窗口都打開scrollbind時會更改行爲。例如,如果我有兩個垂直窗口打開同一個文件,但有一個窗口狹窄,所以換行,我可以讓線條總是「排隊」的唯一方法是(我認爲)通過發出syncbind。當然,線條還是不能完美排列(除非在差異視圖中添加空行),但是當我向上或向下滾動一個窗口時,窗口頂部的兩條線始終完全匹配。不知道這對你來說是否夠用,但是非常頂級的線條總是匹配。 – 2010-11-09 18:29:56

0

我懷疑Vim是否真的適合於垂直緩衝區,如果你需要將它們包裝起來,它們的文本行長度很長,然而,我是一個真正的Vim愛好者。

我可以建議你的是:

  • 用vim,插入行號的每一行的前面,和雙空間文件(:g/^/put _)。如果您正在翻譯,行號不應該真正受到更改?
  • 使用具有圖形技巧的Kompare或Meld打開兩個文件,以平滑綁定不等長度的行。然後調整顏色方案,使其表現得像是不是差異化工具。