Respostas:
É 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)
diff -u "%" -uma vez diffcompreende um traço no sentido de ler de stdin
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.