有没有办法将我对 vim 缓冲区所做的更改保存为原始文件的补丁文件,而不将其保存为单独的文件并使用 diff?
答案1
可以在没有插件的情况下使用该w
命令来执行此操作,因此缓冲区内容可以在 shell 命令中使用:
:w !diff -au "%" - > changes.patch
(%
替换为正在编辑的文件的路径,-
从标准输入读取缓冲区)
答案2
diff
您还可以使用以下语法过滤缓冲区%!
:
:%! diff -au "%" -
这将用差异填充缓冲区,而不是将其写入磁盘;您可能需要进行设置readonly
,以免意外破坏原始文件(OTOH,这不应该是一个严重的问题,因为您的文件处于版本控制之下,正确的?)。当然,使用相反的命令会有所帮助:
:%! patch -o - "%"
这会将您的差异转换回修改后的文件。