¿Cómo guardo los cambios en mi búfer vim como un archivo de revisión?

21

¿Hay alguna manera de guardar los cambios que hice en mi búfer vim como un archivo de parche para el archivo original, sin guardarlo como un archivo separado y usando diff?

lesderid
fuente
2
Hay un nuevo sitio beta SE para Vi y Vim , es posible que desee comprobarlo.
Roflo

Respuestas:

21

Es posible hacer esto sin un complemento usando el wcomando, por lo que el contenido del búfer se puede usar en un comando de shell:

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

( %se sustituye con la ruta del archivo que se está editando, -lee el búfer de stdin)

lesderid
fuente
2
Puede usar diff -u "%" -ya que diffentiende un guión como significado leído de stdin
roaima
1

También puede filtrar el búfer mediante diffla %!sintaxis:

:%! diff -au "%" -

Esto llenará el búfer con el diff, en lugar de escribirlo en el disco; es posible que desee configurarlo readonlypara no golpear el original por accidente (OTOH, eso no debería ser un problema grave porque tiene el archivo bajo control de versión, ¿verdad? ). Por supuesto, ayuda tener el comando inverso:

:%! patch -o - "%"

Eso transforma tu diff nuevamente en el archivo modificado.

Kevin
fuente