¿Dónde guarda VIM (gvim / macvim) archivos de intercambio para buffers sin guardar / sin nombre?

52

¿Dónde guarda VIM (gvim / macvim) archivos de intercambio para buffers sin guardar / sin nombre? (Si es así).

Antecedentes: a lo largo de un seminario semi intenso, tomé notas en un búfer MacVim sin nombre / sin guardar cuando el MacBook se quedó sin energía y se apagó de la nada (no dormía / hibernaba como solía hacerlo).

Pregunta: ¿Alguien sabría si existe alguna posibilidad de que el trabajo no guardado se haya guardado en un archivo de intercambio (.swp) o similar, que podría recuperarse?

Detalles del sistema: en particular, esto sucedió usando MacVim en un Mac OS X 10.5.8 (pero las posibles sugerencias de recuperación para otras versiones también son interesantes). Todavía no he reiniciado MacVim en caso de que hacerlo inicie un proceso de limpieza.

davur
fuente
1
Aclaración: por no guardado quiero decir nunca salvado. El archivo se creó presionando Command-T (creo que es equivalente a: tabe), es decir, se abre un nuevo búfer sin nombre en una nueva pestaña. (Normalmente haría ': sav somefilename' en una etapa posterior.
davur
No importa Vea las adiciones a mi respuesta.
frabjous

Respuestas:

60

Inicie vim e intente:

:recover <filename>

Si el archivo nunca tuvo un nombre, simplemente:

:recover

Esa es tu mejor apuesta. Para obtener más información sobre los archivos de intercambio y la recuperación, consulte:

:help usr_11

Acerca de los archivos de intercambio, generalmente se guardan en el mismo directorio que el archivo que se está editando, pero con un. agregó el principio para ocultarlo y .swp al final, pero es posible moverlos a otra parte mediante algo como:

:set directory=~/vimswap

o similar.

Ver:

:help swap

Para todos los detalles.

Sin embargo, un archivo de intercambio vim no es lo mismo que el búfer editado, así que asegúrese de leer lo que se puede hacer para la recuperación.


EDITAR : comentarios respondiendo la pregunta:

[…] Parece buscar archivos de intercambio en su directorio de trabajo actual, ~ / tmp, / var / tmp y / tmp, y en mi caso siempre tengo un directorio de trabajo actual establecido y ahí es donde se guarda. - dsclementsen 5 de octubre de 10 a 1:42

Además, asegúrese de revisar la línea de comando vim -r arg. Esto imprimirá todos los archivos de intercambio encontrados y dónde están. Además, tendrá mucha información adicional, como fecha / modificado / nombre de usuario / etc ... - Neg_EV 5 de octubre de 10 a 13:49

precioso
fuente
Esto no va a ayudar. Por no salvo, quiero decir nunca salvado. Lo que significa que abrí un nuevo búfer con: tabe o (Command + T). Entonces estamos hablando de un búfer sin guardar / sin nombre. ¿Existe una ubicación predeterminada donde se almacena este tipo de trabajo no guardado?
davur
3
Intenta :recoversin nombre de archivo. Acabo de probar eso para recuperar un archivo sin nombre y funcionó. De todos modos, incluso si ese comando en particular no ayuda, puede leer esos archivos de ayuda.
frabjous
1
No es tan lejos como puedo decir. Acabo de probar matando vim externamente mientras editaba un nuevo archivo. Pero cuando corrí recoversin argumento, me permitió elegir incluso entre algunas sesiones anteriores. De todos modos, el archivo .swp para un búfer no conectado probablemente esté en / tmp, pero estaría en otro lugar dependiendo de si lo tenía set directory= <something>.
frabjous
2
Además, asegúrese de revisar la línea de comando vim -r arg. Esto imprimirá todos los archivos de intercambio encontrados y dónde están. Además, tendrá una gran cantidad de información adicional, como fecha / modificado / nombre de usuario / etc ...
Neg_EV
1
Tuve que usar el comando :recover!para recuperar mi archivo guardado.
2

Trabajo en Windows 10 y :recoverno encontré un archivo de intercambio. vim -renumeró el archivo de intercambio de la última sesión de edición (también nunca guardada) llamado _.swp. La recuperación fue posible con :recover _.

rolacher
fuente
1

La respuesta es: por todas partes. El truco es encontrar el correcto. Algunos están en su directorio / tmp, pero muchos de ellos están en algún lugar debajo de su directorio de inicio.

Quizás haya formas más eficientes de hacer esto, pero lo siguiente funcionó para mí cuando perdí un archivo sin nombre (en MacBook):

en el directorio de inicio, busque archivos de respaldo (toma unos segundos, y probablemente pueda ser más inteligente):

find ./ -name ".s*" > findVimBackups.txt

abrir documento:

vim findVimBackups.txt

eliminar nombres de archivos que no son para copias de seguridad de archivos sin nombre:

:g!/\/\.s..$/d
:g/svn/d

Ahora veo una lista de las ubicaciones de los archivos de copia de seguridad sin nombre. En cada uno de esos directorios ejecuto lo siguiente hasta que encuentro los archivos de hoy:

ls -ltra <directory>

Cd en el directorio correcto y abro vim y escribo: recupere y seleccione la copia de seguridad correcta.

TimHelck
fuente
0

Parece que terminarán en su directorio de trabajo. :pwdAquí es donde abrió vim o, alternativamente, podría haberlo configurado usando :cdo similar.

Parece que los archivos de intercambio de búferes sin nombre se descargan allí sin nombre de archivo, por lo que terminará con .swp .swn .swo, etc. diferentes sufijos!

Supuse que tener muchos buffers sin nombre con cambios podría haber sido la causa y eliminar estos buffers hizo que desaparecieran los archivos misteriosos

JonnyRaa
fuente