Cuando el proceso Vim se termina abruptamente (por ejemplo, bloqueo del sistema), deja un archivo SWP. Abrir el archivo original en Vim más tarde ofrece la opción de recuperación. La mayoría de las veces el archivo recuperado es el mismo que el archivo guardado, porque tengo la costumbre de guardarlo a menudo. Entonces Vim dice:
Recovery completed. Buffer contents equals file contents.
You may want to delete the .swp file now.
Bueno, por supuesto que quiero eliminar el archivo .swp ahora.
¿Cómo puedo hacer que Vim elimine siempre el archivo SWP automáticamente en este caso?
Parece que no hay una configuración integrada para hacer esto, por lo que estoy buscando un evento de autocomando apropiado.
Una forma que encontré es :e #
después del mensaje, lo que hace que las opciones de intercambio aparezcan nuevamente, luego puedo "Eliminarlo". Pero realmente no debería tener que hacer esos pasos adicionales cada vez.
:e #
truco es, aunque no ideal, pero aún más útil que la respuesta actual a continuación. :-)Respuestas:
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ándolosvim -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.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.
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.fuente