Wie speichere ich die Änderungen in meinem VIM-Puffer als Patch-Datei?

20

Gibt es eine Möglichkeit, die Änderungen, die ich an meinem VIM-Puffer vorgenommen habe, als Patch-Datei für die Originaldatei zu speichern, ohne sie als separate Datei zu speichern und Diff zu verwenden?

lesderid
quelle
2
Es gibt eine neue SE-Beta-Site für Vi und Vim .
Roflo

Antworten:

20

Dies ist mit dem wBefehl auch ohne Plugin möglich , sodass der Pufferinhalt in einem Shell-Befehl verwendet werden kann:

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

( %wird durch den Pfad der zu bearbeitenden Datei ersetzt, -liest den Puffer von stdin)

lesderid
quelle
2
Sie können verwenden, diff -u "%" -da diffein Bindestrich als Bedeutung von stdin
roaima 11.06.15
1

Sie können den Puffer auch diffmithilfe der folgenden %!Syntax filtern :

:%! diff -au "%" -

Dadurch wird der Puffer mit dem Diff gefüllt und nicht auf die Festplatte geschrieben. Möglicherweise möchten readonlySie festlegen, dass Sie das Original nicht versehentlich beschädigen (OTOH, das sollte kein ernstes Problem sein, da Sie die Datei unter Versionskontrolle haben, oder? ). Natürlich hilft es, den umgekehrten Befehl zu haben:

:%! patch -o - "%"

Dadurch wird Ihr Diff wieder in die geänderte Datei umgewandelt.

Kevin
quelle