A veces Vim se estrella y me deja un archivo de intercambio. Eso es genial. Luego abro el archivo que estaba editando y Vim me pregunta si quiero recuperar. Yo sí, gracias. Cuando está hecho, Vim me dice:
You may want to delete the .swp file now.
Pues sí, lo hago. ¿Cómo puedo hacer eso? Pensé que simplemente comenzaría a usar el antiguo archivo de intercambio como un archivo de intercambio y lo limpiaría cuando lo dejara, pero eso no es cierto. Hace uno nuevo, lo limpia, y cuando vuelvo a abrir el archivo, nuevamente me pide que me recupere del primero.
Seguro que me estoy perdiendo algo.
delete
opción, solo hay: [O] pluma (E) dit (R) ecover (Q) uit (A) bort, ¿qué debo hacer?(D)elete
opción, ver:help swap-exists
; citarOn Unix this choice is only offered when the process that created the swap file does not appear to be running.
Es decir. quizás tenga otro proceso vim en ejecución que está haciendo que esta opción esté oculta. También podría explicar por qué tienes unaswp
¡Archivo en primer lugar!Para limpiar TODOS los archivos de intercambio de vim en un directorio:
Si está seguro de que no necesita ningún archivo de intercambio vim en un árbol de directorios y desea deshacerse de ellos, puede usar el siguiente comando en el directorio mientras vim está no corriendo (ni siquiera en otra ventana o incluso una sesión de inicio de sesión diferente):
Un poco de inspiración y pensamientos vinieron de Eliminando archivos basura .swp en Grupos de Google. Esto borrará todos los archivos cuyos nombres terminan con
.swk
,.swl
,.swm
,.swn
,.swo
o.swp
en el árbol de directorio actual.Esto podría no ser lo que quieres, por varias razones:
Como se ha indicado, se borrarán todos los archivos. cuyos nombres terminan con
El autor original de esta post dice.swk
,.swl
,.swm
,.swn
,.swo
o.swp
, y no solo.swp
. Gary Johnson dice ,Por otro lado, podría ser inflexible. rublo sugiere
que coincide con todas las extensiones de tres letras (minúsculas) que van desde
.saa
a.swp
. Añade: "Tenga cuidado, aunque esta es una solución más completa, eliminará todos los archivos de imagen .svg y .swf adobe flash. Es posible que desee modificar la expresión regular si trabaja con esos archivos ". Tambien coincide.sav
,.snd
(datos de sonido),.sql
,.src
,.srt
(Formato de subtítulos de video SubRip), y muchas otras extensiones comunes.Podría ser una exageración. Como se ha indicado, se borrarán todos los archivos. cuyos nombres terminan con
.swk
,.swl
,.swm
,.swn
,.swo
o.swp
. Pero, al parecer, los archivos de intercambio vim son comúnmente archivos de "punto". Si editashello.cpp
, el archivo de intercambio podría ser. hola.cpp.swp
. Como se muestra (pero no se explica) en la respuesta de Rouble , es más seguro eliminar solo los archivos cuyos nombres comienzan con un punto; por ejemplo, confuente
Tipo
ls -a
que enumera TODOS los archivos en el directoriotipo
rm .whatever.your.swp
es y pulsa entrarEs así de simple.
Cualquier archivo que se muestre con
.
en frente es un archivo oculto y normalmente no se ve.Recuerda que los cambios son inmediatos y permanentes, así que ten cuidado.
fuente
file.swp
ofile.swo
. Entonces tengo que volver a donde estaba. Golpeando:e
Es una solución mucho más simple.ls: cannot access +A: No such file or directory
No, AFAIK no te estás perdiendo nada.
Vim
continúa guardando el archivo de intercambio como una copia de seguridad hasta que lo elimines explícitamente.Simplemente guarde, salga y vuelva a abrir el mismo archivo nuevamente. Se le pedirá (de nuevo) con
Ahora solo presiona
d
:)fuente
Por cierto Algunos complementos lo hacen automáticamente por ti: autoswap.vim
de la descripción:
fuente
Vim, como la mayoría de los comandos de Unix, es simple y explícito, en lugar de suponer e implícito.
Te recuperas con (r). Si no te gusta la recuperación o la recuperación está dañada, puedes descartarla. Si te gusta, puedes guardar el archivo. El archivo de recuperación no se elimina porque no es explícito y no será correcto en el 100% de las situaciones.
Así que (r) cambia, (w) rito y (q) uit, luego edita de nuevo y elige (d) borrar o "rm .myfile.js.swp" y edita de nuevo. Esto es rápido y siempre es, desde el punto de vista de Vim, un comportamiento 100% correcto.
fuente
Aquí hay una expresión regular más completa para limpiar todos los archivos de intercambio vim basados en el propio archivo gitignore de Github para Empuje
Sin embargo, tenga cuidado, si bien esta es una solución más completa, eliminará los archivos de imagen .svg y los archivos flash adobe .swf. Es posible que desee modificar la expresión regular si trabaja con esos archivos.
fuente
Aquí hay un fragmento para agregar
.vimrc
. Borra todos los archivos de intercambio que están asociado al búfer de archivos actual y restablecer la extensión de intercambio.Una vez encontrada la situación, uno puede ejecutar.
:DeleteFileSwaps
Esto es genial si se combina con:windo
o:tabdo
comandosMás detalles : Un archivo puede tener más de 1 archivo de intercambio. La razon porque El archivo de intercambio, con extensión de
.swp
, todavía existen yvim
seguirá creando nuevos por eso. Para saber si.swp
existe::sw
para obtener el archivo de intercambio actual..swp
.El fragmento de código anterior sigue el mismo proceso, pero elimina todos los archivos de intercambio.
Espero que esto ayude.
fuente
Del manual
:h swap
:fuente
.swp
archivo, el:sw
comando probablemente le dará el nombre de la.swo
archivo - que es no Lo que quieres borrar.si te preguntan entonces presiona re para borrar el archivo de intercambio del archivo actual.
Si no lo eres, entonces tienes que hacerlo manualmente.
Una forma alternativa de hacer esto es:
para localizar / buscar el archivo:
y luego borre este archivo:
fuente
Estos archivos también eran molestos para mí, pero configuré la opción en .vimrc -
set noswapfile
para evitar que vim lo cree y, en cambio, mantenga los archivos en la memoria.fuente
Puedes usar,
Ejemplo:
fuente
<ext>
es redundante aquí ya que un nombre de archivo al menos en Linux incluye cero o más extensiones.