假设我在提交之前生成了我的项目的差异,比如说使用 svn。为项目中的所有文件设置一个差异是在提交更改之前查看更改的一种非常好的方法。但是有时我希望在不重新打开每个文件的情况下编辑这些更改,只需编辑差异并重新应用它。所以我制作了这样的键映射(我设置了 svn diff 以使用具有相当数量周围行的统一格式):
map scde :w! tmpdiff<cr>:!svn revert -R .<cr>:!patch -p0 <tmpdiff<cr>
它有效,但只是部分有效;您可以编辑添加的行,但是如果将行标记为已删除或想要添加另一行,则会遇到一些麻烦,因为指定的差异范围与差异中存在的实际文本不匹配。可以更新它们以进行简单的更改,例如添加一行,但是如果您进行更复杂的更改,它会很乏味并且很快就会变得复杂。有没有办法编辑差异,以便范围会自动正确更新?我发现emacs对此有一些差异模式(但是我没有尝试过),但是我无法使用vim找到满足我需求的解决方案。Maye有人可以提供一些建议吗?