Este mensaje es bastante importante si le importa no perder el texto que potencialmente no ha guardado. Debería no ser considerado molesto, y debe no hacer que se elimine toda prisa el archivo de intercambio o configurar vim
para funcionar sin ella.
Cualquier archivo con el que edite vim
tendrá un archivo de intercambio correspondiente mientras edita , que se vim
utiliza para realizar un seguimiento de los cambios. Cuando deje de editar un archivo, vim
descartará automáticamente el archivo de intercambio correspondiente. Por lo tanto, la existencia de un archivo de intercambio y su intento de escribir sobre el archivo original deben ser motivo de consideración y acción apropiada.
Los dos escenarios presentados en el mensaje ( E325: ATTENTION Found a swap file
) son en realidad bastante comunes: (1) o bien otro vim
programa está editando el mismo archivo que está tratando de editar (en realidad podría ser otra persona, en cuyo caso realmente no tendría sentido simplemente eliminar ciegamente el archivo de intercambio, o podría ser usted en otra ventana o pestaña de terminal), o (2) una vim
sesión anterior se bloqueó (la mayoría de las veces esto ocurre cuando está editando de forma remota, y la sesión de red se corta) en la que caso de que la sesión vim no salga normalmente y el .swp
archivo se quede atrás; otro ejemplo de este segundo escenario es que accidentalmente cerró la ventana o pestaña del terminal que tuvo una vim
sesión activa o en segundo plano ).
Cuando encuentro este mensaje, primero pienso si estoy editando este archivo en otra ventana o pestaña de terminal, ya que normalmente opero con varias ventanas de terminal con varias pestañas cada una:
Si me doy cuenta de que estoy editando en otro lugar y puedo volver a él , entonces presiono la q
tecla para (Q)uit
esta sesión adicional y vuelvo a editar a través de la vim
sesión original .
A veces, si no estoy completamente seguro, (Q)uit
corro jobs
para verificar si estoy corriendo vim
exactamente en el mismo terminal; si no aparece nada, corro ps -ef | grep vim
para verificar si estoy ejecutando en vim
otro lugar (es decir, en otra ventana o pestaña de terminal). El punto es que siempre trato de reanudar la edición a través de la vim
sesión original .
Si estoy seguro de que no puedo volver a la sesión de edición original, y todavía se me presentan las siguientes opciones, entonces presiono r
para (R)ecover
.
Swap file ".notes.swp" already exists!
[O]pen Read-Only, (E)dit anyway, (R)ecover, (Q)uit, (A)bort:
Al presionar r
, verá un mensaje como este:
Swap file ".notes.swp" already exists!
"notes" 18L, 46C
Using swap file ".notes.swp"
Original file "/private/tmp/notes"
Recovery completed. Buffer contents equals file contents.
You may want to delete the .swp file now.
Press ENTER or type command to continue
Si, por otro lado, ya no me enfrento a esas opciones, porque estoy en el indicador de comandos de la shell, entonces ejecuto vim
con la -r
opción, de la siguiente manera:
vim -r notes
El mensaje resultante será similar:
Using swap file ".notes.swp"
Original file "/private/tmp/notes"
Recovery completed. Buffer contents equals file contents.
You may want to delete the .swp file now.
Press ENTER or type command to continue
De cualquier manera, presione ENTER
para continuar y verá su archivo.
Nota: Si Vim tiene dudas sobre lo que encontró, mostrará un mensaje de error e insertará líneas con "???" en el texto. Si ve un mensaje de error mientras se recupera, busque en el archivo "???" para ver qué pasa Es posible que desee cortar y pegar para obtener el texto que necesita.
La observación más común es "??? LINES MISSING". Esto significa que Vim no puede leer el texto del archivo original. Esto puede suceder si el sistema se bloquea y no se guardan partes del archivo original.
Dicho esto, nunca he visto esas ???
marcas, por lo que esto debe ser un hecho realmente raro .
A continuación, guarde (es decir, escriba) el contenido en otro archivo (generalmente solo agrego "2" al final del nombre del archivo original):
:w notes2
A continuación, cierre forzosamente esta vim
sesión:
:q!
A continuación, compare los dos archivos:
diff notes notes2
Si diff
no devuelve nada , eso significa que no hay diferencia, y es seguro eliminar tanto el archivo de intercambio como el segundo archivo:
rm .notes.swp notes2
En este punto, abra el archivo original y proceda como si nunca hubiera habido un problema:
vim notes
Si diff
devuelve algo , eso significa que el archivo original (a través del archivo de intercambio) tuvo cambios que, gracias a la recuperación, se guardaron en el segundo archivo.
Dado que esos cambios se capturan en el segundo archivo, puede eliminar el archivo de intercambio y sobrescribir el archivo original con el segundo:
rm .notes.swp
remove .notes.swp? y
mv notes2 notes
overwrite notes? (y/n [n]) y
En este punto, abra el archivo original y proceda como si nunca hubiera habido un problema:
vim notes
Esto parece mucho trabajo, pero una vez que te acostumbras al flujo de trabajo, toma como 20 segundos como máximo.