Nota: no ha dicho qué sistema operativo está utilizando. Lo siguiente funciona con un shell de Unix, pero si ejecuta Windows, puede descargar un Cygwin básico o algún otro shell.
Solía hacer lo mismo que usted, ejecutar :e
para volver a abrir el mismo archivo para obtener la opción de eliminar el archivo de recuperación. Después de un bloqueo o reinicio inesperado de la computadora, limpio todos los archivos de recuperación de Vim restantes ejecutándolos vim -r
en los archivos de intercambio y dejando que continúe la recuperación.
Cuando los archivos no han cambiado
Si los archivos no han cambiado, quiero eliminar el archivo de recuperación de inmediato. Sería genial si Vim pudiera hacer esto automáticamente, pero desafortunadamente no lo hace.
Cuando los archivos han cambiado
Si los archivos han cambiado, ejecuto el DiffOrig
comando para comparar las diferencias entre las versiones original y recuperada. Si estoy satisfecho con los cambios del archivo de recuperación, salgo guardando los archivos con el :x
comando. Si no, descarto los cambios recuperados al salir con :q!
. Si el archivo de recuperación no está asociado con un archivo guardado, por ejemplo, .swp
generalmente uso el :w filename
para guardar el búfer recuperado en un archivo con un nombre de archivo.
DiffOrig ayudante
He añadido el DiffOrig comando para mi .vimrc
, para que esté siempre disponible.
command DiffOrig vert new | set bt=nofile | r # | 0d_ | diffthis | wincmd p | diffthis
Script de Shell
Ejecuto el siguiente script en mi shell para encontrar cada archivo de intercambio en el árbol de directorios actual. Cada archivo de intercambio se utiliza para abrir Vim en "modo de recuperación" y luego se elimina después de cerrar Vim.
find . -type f -name '.*.sw?' -exec vim -r "{}" -c DiffOrig \; -exec rm -iv "{}" \;
La rm -i
opción requiere confirmación ( y
) para eliminar el archivo. Si tiene más confianza y desea acelerar el proceso, esto puede omitirse.
:e #
truco es, aunque no ideal, pero aún más útil que la respuesta actual a continuación. :-)