2012-07-05 58 views
0

我知道vim中的差異是頁面本地的,這意味着我們只能在一個標籤頁中有一個差異,對吧?但是如果我想在一個標籤頁中有兩個差異呢。例如,一個diff位於頂部兩個窗口之間,另一個diff位於底部兩個窗口之間。這是處理git merge confilict時的一個常見問題。 我們可以讓遠程提交改變diff在最上面的兩個窗口中,並且本地文件和本地confilict文件diff在最下面的兩個窗口中,然後我們確切地知道在遠程引起的錯誤並修復了它們。有沒有辦法在一個vim選項卡中查看兩個差異?

我該怎麼做?有沒有插件?

回答

1

緩衝區參與diff由緩衝區設置的'diff'決定,用於標籤頁內可見的所有緩衝區(最多4個緩衝區)。實現你的願望需要一個「差異組」的概念,例如:setlocal diff=group1,但今天並不存在這樣的事情。

如果沒有Vim補丁(我能想到),今天唯一的方法是在拆分窗口屏幕或tmux會話中運行兩個單獨的Vim實例。

+0

你可以做一個黑客攻擊。 – user2987828

0

如果你想A.TXT比較B.txt和A.java到B.java,你可以這樣做:

echo two way diffs separator > separator 
cat A.txt separator A.java > A 
cat B.txt separator B.java > B 
vimdiff A B 

然後輸入命令

G:sp|set noscrollbind|normal gg<enter>分裂左窗格中和debind新窗格的滾動,

<c-W>l去走右邊的窗格中,

G:sp|set noscrollbind|normal gg<enter>做同樣的事情到右側窗格中。

當然,這並不理想:頂部窗口的光標未鏈接,如果向下滾動或向上滾動,每個緩衝區也包含另一個緩衝區。

相關問題