Como salvar as alterações no meu buffer vim como um arquivo de patch?

20

Existe uma maneira de salvar as alterações que fiz no meu buffer vim como um arquivo de correção para o arquivo original, sem salvá-lo como um arquivo separado e usando o diff?

lesderid
fonte
2
Há um novo site beta do SE para Vi e Vim , você pode conferir.
Roflo

Respostas:

20

É possível fazer isso sem um plug-in usando o wcomando, para que o conteúdo do buffer possa ser usado em um comando shell:

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

( %é substituído pelo caminho do arquivo que está sendo editado, -lê o buffer de stdin)

lesderid
fonte
2
Você pode usar diff -u "%" -uma vez diffcompreende um traço no sentido de ler de stdin
roaima
1

Você também pode filtrar o buffer diffusando a %!sintaxe:

:%! diff -au "%" -

Isso preencherá o buffer com o diff, em vez de gravá-lo no disco; convém configurar readonlypara não danificar o original por acidente (OTOH, isso não deve ser um problema sério, porque você tem o arquivo sob controle de versão, certo? ). Obviamente, ajuda ter o comando inverso:

:%! patch -o - "%"

Isso transforma seu diff de volta no arquivo modificado.

Kevin
fonte