Eu não testei, mas e esta solução apresentada no wiki oficial do vim?
O arquivo de troca "..." já existe! - então diff it
Also in the situation where the recovered swapfile turns out to be identical to the real file, there is no need for the diffing.
#!/bin/bash
# Expects variables realfile, swapfile, recoveryfile.
vim -r "$swapfile" -c ":wq! $recoveryfile" && rm "$swapfile"
if cmp "$recoveryfile" "$realfile"
then rm "$recoveryfile"
else vimdiff "$recoveryfile" "$realfile"
fi
Há um script para esse problema também em Stackoverflow .
This will remove any swap files that are up-to-date with the real files. Any that don't match are brought up in a vimdiff window so I can merge in my unsaved changes.