Jak zapisać zmiany w buforze vim jako plik łatki?


21

Czy istnieje sposób na zapisanie zmian, które wprowadziłem w buforze vim jako plik łatki dla oryginalnego pliku, bez zapisywania go jako osobnego pliku i używania diff?


2
Jest nowa strona SE w wersji beta dla Vi i Vima , możesz ją sprawdzić.
Roflo,

Odpowiedzi:


21

Można to zrobić bez wtyczki za pomocą wpolecenia, więc zawartość bufora można wykorzystać w poleceniu powłoki:

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

( %jest zastąpiony ścieżką edytowanego pliku, -odczytuje bufor ze standardowego wejścia)


2
Możesz używać, diff -u "%" -ponieważ diffrozumie myślnik jako znaczenie czytane ze stdin
roaima,

1

Możesz także przefiltrować bufor diffużywając %!składni:

:%! diff -au "%" -

Spowoduje to wypełnienie bufora różnicą zamiast zapisywania go na dysku; możesz ustawić readonlytak, aby przypadkowo nie blokować oryginału (OTOH, nie powinno to stanowić poważnego problemu, ponieważ plik jest pod kontrolą wersji, prawda? ). Oczywiście pomaga mieć odwrotne polecenie:

:%! patch -o - "%"

To przekształca twój plik różnicowy z powrotem w zmodyfikowany plik.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.