Una forma un poco más sencilla

Una forma un poco más sencilla

A veces Vim falla y me deja un archivo de intercambio. Eso es genial. Luego abro el archivo que estaba editando y Vim me pregunta si quiero recuperarlo. Sí, gracias. Cuando termina, 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 archivo de intercambio nuevamente y lo limpiaría cuando saliera, pero eso no es cierto. Crea uno nuevo, lo limpia y cuando abro el archivo nuevamente me solicita nuevamente que recupere el primero.

Seguramente me estoy perdiendo algo.

Respuesta1

Una forma un poco más sencilla

Desde el emulador de terminal:

$ vim filename

Luego dentro de vim eligerecuperar, y si desea eliminar el intercambio,escribir(guardar) y luego llamar a este comando:

:e          // no argument needed. It assumes the current buffer.

...y eligeborraresta vez.

Una ventaja de este enfoque es que no sobrescribirá automáticamente un archivo funcional si la recuperación resulta corrupta (aunque admito que nunca me había sucedido eso antes).

También hay consejos relevantes.en esta preguntaen Stack Overflow (donde encontré este consejo).

Respuesta2

Para limpiar TODOS los archivos de intercambio de vim en un directorio:

Si está seguro de que no necesita ningún archivo de intercambio de vim en un árbol de directorios y desea deshacerse de ellos, puede usar el siguiente comando en el directorio mientras vim estánoejecutándose (ni siquiera en otra ventana o incluso en una sesión de inicio de sesión diferente):

find . -type f -name "*.sw[klmnop]" -delete

Algunas inspiraciones y pensamientos vinieron deEliminación de archivos .swp basura en Grupos de Google. Esto eliminará todos los archivos cuyos nombres terminen con .swk, .swl, .swm, .swn, .swoo .swp en el árbol de directorios actual.

Es posible que esto no sea lo que desea por varias razones:

  • Como se indicó, busca en el directorio actual.árbol ; es decir, el directorio actual y todos los subdirectorios, de forma recursiva. Eso va más allá de lo que pide la pregunta y puede considerarse excesivo.
  • Como se indicó, eliminará todos los archivos cuyos nombres terminen con .swk, .swl, .swm, .swn, .swoo .swp, y no solo .swpGary Johnson dice,

    Además, no todos los archivos de intercambio terminan en .swp. Si Vim necesita crear un archivo de intercambio y ya existe uno que termina en .swp, Vim usará la extensión .swo para el nuevo y .swn después de eso. Creo que simplemente continúa hacia atrás a través del alfabeto. Entonces usando algo como

      \*.sw[nop] 
    

    o incluso

      \*.sw? 
    

    Sería más minucioso.

    El autor original deestela publicación dice,

    'klmnop' puede ser excesivo, pero eso generalmente garantiza que los obtenga todos.

  • Por otro lado, podría ser insuficiente.  rublo sugiere

    find . -type f \( -name ".*.s[a-v][a-z]" -o -name ".*.sw[a-p]" \) -delete
    

    que coincide con todas las extensiones de tres letras (minúsculas) que van desde .saahasta .swp. Y añade: “Pero tenga cuidado, aunque esta es una solución más completa, eliminará todos los archivos de imagen .svg y los archivos .swf de Adobe Flash. Es posible que desees modificar la expresión regular si trabajas con esos archivos”. También coincide con .sav, .snd(datos de sonido), .sql, .src, .srt(formato de subtítulos de video SubRip) y muchas otras extensiones comunes.

  • Puede que sea excesivo. Como se indicó, eliminará todos los archivos cuyos nombres terminen con .swk, .swl, .swm, .swn, .swoo .swp. Pero, aparentemente, los archivos de intercambio vim son comúnmente archivos "punto". Si lo edita hello.cpp, el archivo de intercambio podría ser .hello.cpp.swp. Como se muestra (pero no se explica) enla respuesta del rublo, es más seguro eliminar sólo archivos cuyos nombres comiencen con un punto; por ejemplo, con

    find . -type f -name ".*.sw[klmnop]" -delete
    

Respuesta3

Tipo ls -aque enumera TODOS los archivos en el directorio

escriba rm .whatever.your.swpes y presioneenter

Es así de simple.

Cualquier archivo que se muestra al .frente es un archivo oculto y normalmente no se ve.

Recuerda que los cambios son inmediatos y permanentes así que ten cuidado.

Respuesta4

Por cierto. Algunos complementos lo hacen automáticamente por usted:autoswap.vim

de la descripción:

  1. ¿El archivo ya está abierto en otra sesión de Vim en alguna otra ventana?
  2. Si es así, cambie a la ventana donde estamos editando ese archivo.
  3. De lo contrario, si el archivo de intercambio es más antiguo que el archivo en sí, simplemente elimínelo.
  4. De lo contrario, abra el archivo en modo de solo lectura para que podamos verlo y guardarlo.

información relacionada