Respostas:
É possível fazer isso sem um plug-in usando o w
comando, 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 diff
compreende um traço no sentido de ler de stdin
Você também pode filtrar o buffer diff
usando a %!
sintaxe:
:%! diff -au "%" -
Isso preencherá o buffer com o diff, em vez de gravá-lo no disco; convém configurar readonly
para 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.