Как сохранить изменения в буфере vim в виде файла патча?


21

Есть ли способ сохранить сделанные мной изменения в буфере vim как файл патча для исходного файла, не сохраняя его как отдельный файл и не используя diff?


2
Существует новый бета-сайт SE для Vi и Vim , вы можете проверить его.
Roflo

Ответы:


21

Это можно сделать без плагина с помощью wкоманды, поэтому содержимое буфера можно использовать в команде оболочки:

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

( %заменяется путем пути редактируемого файла, -считывает буфер из stdin)


2
Вы можете использовать, diff -u "%" -поскольку diffпонимает черту как значение, прочитанное с stdin
roaima

1

Вы также можете отфильтровать буфер, diffиспользуя %!синтаксис:

:%! diff -au "%" -

Это заполнит буфер diff, а не записывает его на диск; Вы можете захотеть установить, readonlyчтобы случайно не заглушить оригинал (OTOH, это не должно быть серьезной проблемой, потому что у вас есть файл с контролем версий, верно? ). Конечно, полезно иметь обратную команду:

:%! patch -o - "%"

Это преобразует ваш diff обратно в измененный файл.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.