Vim编辑* diff文件*,自动更新diff范围

时间:2012-05-10 07:09:23

标签: vim diff

假设我在提交之前生成了项目的差异,假设使用svn。对项目中的所有文件使用一个diff是一种非常好的方法,可以在提交之前查看更改。但是,有时我希望在不重新打开每个文件的情况下编辑这些更改,只需编辑差异并重新应用它。所以我制作了这样的关键地图(我已经设置了svn diff以使用具有相当数量的周围线条的统一格式):

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

它有效,但只是部分;您可以编辑添加的行,但如果您将行标记为已删除或想要添加另一行,则会遇到一些麻烦,因为指定的diff范围与diff中存在的实际文本不匹配。可以更新它们以进行简单的更改,例如添加一行,但是如果您进行更复杂的更改,它会很繁琐且很快变得复杂。有没有办法编辑差异,以便范围自动更新?我发现emacs有一些diff模式(但我还没试过),但是我无法使用vim找到解决方案。 Maye有人可以提出一些建议吗?

1 个答案:

答案 0 :(得分:5)

看看rediff。它会自动修复补丁文件中的偏移量。