2012-05-10 19 views
3

     假設我在提交之前生成項目的差異,比如說使用svn。對項目中的所有文件使用一個差異是在提交之前查看更改的一種非常好的方式。但是有時我希望在不重新打開每個文件的情況下編輯這些更改,只需簡單地編輯差異並重新應用即可。所以我做了這樣的鍵映射(我有安裝SVN diff來使用統一格式,相當數量的周邊線):Vim編輯* diff文件*,自動更新差異範圍

map scde :w! tmpdiff<cr>:!svn revert -R .<cr>:!patch -p0 <tmpdiff<cr> 

     它的工作原理,但只是部分;您可以編輯添加的行,但是如果您將行標記爲已刪除或想要添加另一行,則會遇到一些麻煩,因爲指定的diff範圍與diff中的實際文本不匹配。人們可以通過簡單的更改來更新它們,例如添加一行,但是如果您進行更復雜的更改,則會很繁瑣,並且會很快變得複雜。有沒有辦法編輯差異,以便範圍會自動更新正確?我發現emacs有一些差異模式(但我沒有嘗試過),但是我無法使用vim爲我的需求找到解決方案。 Maye有人可以提出一些建議嗎?

回答

5

看看rediff。它會自動修復補丁文件中的偏移量。

+1

事實上,rediff似乎是這種情況的工具。謝謝。 只是爲他人的筆記,爲什麼可以試試這個。編輯diff和rediff之後,在修補時可能需要設置不同的模糊(選項-F)。 – morphles