Observação: você não informou qual sistema operacional está usando. O seguinte funciona com um shell Unix, mas se estiver executando o Windows, você pode baixar um Cygwin ou algum outro shell.
Eu costumava fazer o mesmo que você, execute :e
para reabrir o mesmo arquivo para obter a opção de excluir o arquivo de recuperação. Após uma falha ou reinicialização inesperada do computador, eu limpo todos os arquivos de recuperação remanescentes do Vim executando vim -r
nos arquivos de permuta e deixando a recuperação continuar.
Quando os arquivos não são alterados
Se os arquivos não mudaram, quero excluir o arquivo de recuperação imediatamente. Seria ótimo se o Vim pudesse fazer isso automaticamente, mas infelizmente não.
Quando os arquivos foram alterados
Se os arquivos foram alterados, eu corro o comando DiffOrig
para comparar as diferenças entre as versões original e recuperada. Se estiver satisfeito com as alterações do arquivo de recuperação, saio salvando os arquivos com o comando :x
. Caso contrário, descartarei as alterações recuperadas, fechando com :q!
. Se o arquivo de recuperação não estiver associado a um arquivo salvo, por exemplo, .swp
, geralmente uso o :w filename
para salvar o buffer recuperado em um arquivo com um nome de arquivo.
DiffOrig helper
Eu adicionei o comando DiffOrig ao meu .vimrc
para que esteja sempre disponível.
command DiffOrig vert new | set bt=nofile | r # | 0d_ | diffthis | wincmd p | diffthis
Script da shell
Eu corro o seguinte script no meu shell para encontrar todos os arquivos de troca na árvore de diretórios atual. Cada arquivo de swap é então usado para abrir o Vim em “modo de recuperação” e é então deletado após o fechamento do Vim.
find . -type f -name '.*.sw?' -exec vim -r "{}" -c DiffOrig \; -exec rm -iv "{}" \;
A opção rm -i
requer confirmação ( y
) para excluir o arquivo. Se você está mais confiante e quer acelerar o processo, isso pode ser omitido.