2009-03-03 12 views
149

He encontrado que durante el uso de Vim en Windows Vim guarda el archivo, un archivo .ext.swp que se elimina al cerrar la ventana de Vim y un archivo .ext~.¿Por qué Vim guarda archivos con una ~ extensión?

Supongo que el archivo .ext.swp es una copia de seguridad de la sesión en caso de que Vim falle. ¿Cuál es el propósito del archivo .ext~ sin embargo? ¿Es esto un archivo de copia de seguridad permanente? Es molesto porque me gustaría copiar todos los archivos en los que estoy trabajando a mi host, sin estos duplicados. ¿Cómo puedo desactivar esto o, si está allí por una buena razón, ocultar los archivos?

+0

Si tiene un archivo abierto simultáneamente en más de un lugar, creará un '.ext.swp'. – dirkgently

+1

dirkgently: No, aquí puedo abrir un archivo en la única ventana de vim y creará el archivo .swp. No me preocupa demasiado porque se elimina cuando guardo/cierro la ventana. – Ross

Respuesta

194

*.ext~ el archivo es un archivo de copia de seguridad, que contiene el archivo como lo era antes de editarlo.

El archivo *.ext.swp es el archivo de intercambio, que sirve como un archivo de bloqueo y contiene el historial de deshacer/rehacer, así como cualquier otra información interna que necesite Vim. En caso de un bloqueo, puede volver a abrir el archivo y Vim restablecerá su estado anterior desde el archivo de intercambio (que me parece útil, por lo que no lo desactivo).

Para desactivar la creación automática de archivos de copia de seguridad, utilice (en su vimrc):

set nobackup 
set nowritebackup 

Dónde nowritebackup cambia el valor por defecto "Guardar" comportamiento de Vim, que es: tampón

  1. escritura al nuevo archivo
  2. borrar el archivo original
  3. cambiar el nombre del nuevo archivo

y hace que Vim escriba el búfer en el archivo original (lo que implica el riesgo de destruirlo en caso de un error de E/S). Pero evitas "saltar archivos" en el escritorio de Windows con él, que es la razón principal para que tenga nowritebackup en su lugar.

+7

+1 Para 'evitar 'saltar archivos' en el escritorio de Windows'. Busqué en Google y encontré esta respuesta –

+0

En realidad, ¿tengo que tener tanto 'nobackup' como' nowritebackup'? ¿Hay alguna manera de escribir una copia del archivo como copia de seguridad, pero no hacer esto escribir/eliminar/cambiar el nombre de las cosas? –

+0

@Merlyn: si tiene 'backup' (en lugar de' nobackup'), entonces Vim creará una copia de seguridad (el archivo '* .ext ~'). Esto no tiene ninguna relación con 'nowritebackup'. – Tomalak

12
:set nobackup 

desactivará las copias de seguridad. También puede establecer un directorio de copia de seguridad si aún desea esos archivos de copia de seguridad, pero en una carpeta central. De esta manera, su directorio de trabajo no está lleno de ~ archivos.

Encontrará más información sobre copias de seguridad en : copia de seguridad.

5

Tiene razón en que el archivo .swp es utilizado por vim para el bloqueo y como un archivo de recuperación.

Intente poner set nobackup en su vimrc si no quiere estos archivos. Consulte the Vim docs para obtener varias opciones relacionadas con la copia de seguridad si desea la primicia completa o si desea tener archivos .bak en su lugar ...

+0

+1 por mencionar el propósito como un archivo de bloqueo. No pensé en eso. – Tomalak

22

Para desactivar esos archivos, simplemente agregue estas líneas a .vimrc (archivo de configuración vim en sistema operativo basado en Unix):

set nobackup  #no backup files 
set nowritebackup #only in case you don't want a backup file while editing 
set noswapfile  #no swap files 
11

Y también puede establecer una extensión de copia de seguridad diferente y dónde guardar esas copias de seguridad (prefiero ~/.vimbackups en Linux).Solía ​​usar copias de seguridad "versionados", a través de:

au BufWritePre * let &bex = '-' . strftime("%Y%m%d-%H%M%S") . '.vimbackup' 

Esto establece una extensión de copia de seguridad dinámica (ORIGINALFILENAME-YYYYMMDD-HHMMSS.vimbackup).

+3

es posible que desee incluir cómo configurar el directorio de copia de seguridad, es decir, poner' set backupdir = ~/.vimbackups' en su ~/.vimrc – rampion

+1

La ayuda vim describe completamente esta técnica. Ver ': help backupext' – netjeff

190

creo que la mejor solución es colocar estas líneas en su archivo vimrc

set backupdir=~/vimtmp,. 
set directory=~/vimtmp,. 

Tienes que crear un directorio en su directorio personal llamado vimtmp para que esto funcione.

De esta manera usted obtiene el beneficio de ambos mundos, no tiene que ver los archivos, pero si algo se agota, puede obtener su archivo de copia de seguridad de vimtmp. No olvides limpiar el directorio de vez en cuando.

+19

+1 De hecho tengo el mío establecido en ~/.vim/tmp, pero de cualquier forma, esto me ha salvado el trasero en más de una ocasión. – jonyamo

+0

Me gusta mucho esta idea. – Abel

+9

¿Por qué lo necesita,. al final de cada línea? – shin

3

La única opción que funcionó para mí fue poner esta línea en mi archivo ~/.vimrc

conjunto noundofile

Las otras opciones referentes a los archivos de copia de seguridad no impidieron la creación de los archivos temporales que termina en ~ (tilde)

3

poner esto en su línea de vimrc:

set nobk nowb noswf noudf " nobackup nowritebackup noswapfile noundofile 

en Windows que sería el C:\Program Files (x86)\vim\_vimrc archivo para la configuración de vim de todo el sistema para todos los usuarios.

Configurar el último noundofile es importante en Windows para evitar la creación de archivos tilda *~ después de la edición.


Deseo que Vim tuviera esa línea incluida por defecto. A nadie le gustan los directorios desagradables.

Deje que el usuario elija si desea habilitar primero las funciones avanzadas de archivos de copia de seguridad/deshacer y cómo quiere hacerlo.

Esta es la parte más molesta de Vim.

El siguiente paso es la creación de set noeb vb t_vb= desactivar pitido: P

0

he tenido que añadir set noundofile a ~ _gvimrc

El "~" directorio puede ser identificado por cambiar el directorio con el comando cd ~

Cuestiones relacionadas