如何将更改保存到vim缓冲区中作为补丁文件?


20

有没有一种方法可以将对vim缓冲区所做的更改保存为原始文件的补丁文件,而无需将其另存为单独的文件并使用diff?


2
Vi和Vim有一个新的SE beta站点,您可能需要检查一下。
罗夫洛2015年

Answers:


20

使用该w命令可以在没有插件的情况下执行此操作,因此可以在shell命令中使用缓冲区内容:

:w !diff -au "%" - > changes.patch

%用正在编辑的文件的路径替换,-从stdin中读取缓冲区)


2
您可以使用,diff -u "%" -因为diff
它将

1

您还可以diff使用以下%!语法过滤缓冲区:

:%! diff -au "%" -

这将用差异填充缓冲区,而不是将其写入磁盘。您可能需要进行设置,readonly以免意外破坏原件(OTOH,这不是一个严重的问题,因为您的文件受版本控制,对吗?)。当然,使用反命令会有所帮助:

:%! patch -o - "%"

这样会将您的差异转换回修改后的文件。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.