2009-05-04 10 views
186

¿Hay alguna forma de desactivar la creación de archivos .swp en vim? o al menos crearlos todos en un solo lugar para que pueda encontrarlos y eliminarlos fácilmente.Deshabilitar la creación de archivos de intercambio en vim

Los encuentro especialmente molestos cuando copio el directorio padre mientras edito al mismo tiempo. Por supuesto, sé que puedo usar find -exec para encontrarlos y eliminarlos. Pero quiero una solución más práctica.

+1

http://stackoverflow.com/questions/607435/why-does-vim-save-files-with-a-extension podría ayudar – Ross

+2

http://stackoverflow.com/questions/743150/how-to-prevent -vim-from-creating-and-leaving-temporary-files/743209 # 743209 – maxaposteriori

Respuesta

217

Para desactivar los archivos de intercambio dentro de vim, tipo

:set noswapfile 

Para desactivar los archivos de intercambio permanente, agregue el siguiente a su archivo ~/.vimrc

set noswapfile 

Para obtener más información, ver el Vim docs on swapfile

+4

Los archivos de intercambio son buenos si su editor falla (corte de energía, etc.), solo tenga en cuenta. – koonse

+0

Otra opción es usar el archivo de intercambio, pero déjelo en la memoria, para que no siga escribiendo en el disco duro. Esto no puede protegerlo de perder el archivo durante una interrupción, pero si abre el mismo archivo en antera vim, se lo informará de inmediato. El comando es: set directory =/dev/shm – webbertiger

+0

[respuesta de trusktr] (https://stackoverflow.com/a/15317146/712526) le permite mantener las ventajas de los archivos de intercambio mientras se ocupa de la preocupación del OP. – jpaugh

3

Si coloca set directory="" en su archivo exrc, desactivará el archivo de intercambio. Sin embargo, al hacerlo, deshabilitará la recuperación.

Más información here.

27

aquí son mis personales ~ configuración de copia de seguridad/.vimrc

" backup to ~/.tmp 
set backup 
set backupdir=~/.vim-tmp,~/.tmp,~/tmp,/var/tmp,/tmp 
set backupskip=/tmp/*,/private/tmp/* 
set directory=~/.vim-tmp,~/.tmp,~/tmp,/var/tmp,/tmp 
set writebackup 
36

he encontrado la respuesta here:

vim -n <file> 

abre archivo sin archivo de intercambio.

Además:

set dir=/tmp 

en .vimrc crea las swapfiles en /tmp.

+0

¿Qué pasa con los archivos de copia de seguridad '* .ext ~'? ¿Hay alguna opción de línea de comando para desactivarlos también? –

+0

¡Eso es muy útil para esos enormes archivos únicos! Gracias. –

6

Puede establecer que el directorio de copia de seguridad y el directorio sean nulos para deshabilitar por completo sus archivos de intercambio, pero generalmente se recomienda simplemente colocarlos en un directorio centralizado. Vim se encarga de asegurarse de que no haya colisiones de nombres ni nada de eso; Por lo tanto, esta es una alternativa completamente segura:

set backupdir=~/.vim/backup/ 
set directory=~/.vim/backup/ 
+2

Debe agregar una doble barra '//' al final de las rutas para que pueda modificar dos archivos con el mismo nombre al mismo tiempo. –

12

estoy de acuerdo con aquellos que cuestionan por qué vim necesita toda esta 'recuperación de desastres' cosas cuando no hay otros editores de texto se moleste con él. No quiero que vim cree CUALQUIER archivo extra en el directorio del archivo editado cuando lo estoy editando, muchas gracias. A tal fin, tengo esto en mi _vimrc desactivar los archivos de intercambio, y mover irritante 'backup' archivos en el directorio temporal:

" Uncomment below to prevent 'tilde backup files' (eg. myfile.txt~) from being created 
"set nobackup 

" Uncomment below to cause 'tilde backup files' to be created in a different dir so as not to clutter up the current file's directory (probably a better idea than disabling them altogether) 
set backupdir=C:\Windows\Temp 

" Uncomment below to disable 'swap files' (eg. .myfile.txt.swp) from being created 
set noswapfile 
+7

Creo que el hecho de que otros editores no se molesten con él se refleja peor en los otros editores más de lo que refleja mal en vi (m). La opción de hacer que el mismo directorio sea el lugar predeterminado para poner estos archivos es un poco desafortunado, aunque al menos marginalmente defendible. (Por ejemplo, en un entorno multiservidor altamente montado en forma cruzada, puede no ser obvio dónde encontrar un archivo de recuperación en el momento en que lo necesita con más urgencia) –

+2

El manejo del archivo de intercambio de Vim es horrible. Lo he usado para recuperar datos perdidos tal vez 5 veces. Pero me han molestado para recuperar un archivo de intercambio alrededor de 9,000 veces, que es invariablemente idéntico al archivo de todos modos, o peor aún una versión desactualizada. Podría ser una buena característica si el proceso de recuperación no apesta tan terriblemente. recover.vim ayuda un poco, pero sigue siendo muy interactivo. – joeytwiddle

+3

Sublime Text tiene 'disaster recovery'. ¡Lo amo! Ni siquiera tengo que guardar un archivo, cuando reanudo cualquier cambio que hice, guardado o no, vuelvo a subir. – leetNightshade

136

Establecer las siguientes variables en .vimrc o/etc/vimrc para hacer poner vim de intercambio, de copia de seguridad y deshacer los archivos en una ubicación especial en lugar del directorio de trabajo del archivo que se está editando:

set backupdir=~/.vim/backup// 
set directory=~/.vim/swap// 
set undodir=~/.vim/undo// 

el uso de doble barras de cierre en el camino le dice a Vim para permitir una característica que evita colisiones de nombres. Por ejemplo, si edita un archivo en una ubicación y otro archivo en otra ubicación y ambos archivos tienen el mismo nombre, no desea que se produzca una colisión de nombre en ~/.vim/swap /. Si especifica ~/.vim/swap // con dos barras diagonales, vim creará archivos de intercambio usando toda la ruta de los archivos que se están editando para evitar colisiones (las barras en la ruta del archivo serán reemplazadas por el símbolo de porcentaje%).

Por ejemplo, si edita /path/one/foobar.txt y /path/two/foobar.txt, verá dos archivos de intercambio en ~/.vim/swap/que se denominan% path% one % foobar.txt y% ruta% dos% foobar.txt, respectivamente.

+0

También podría agregar que los archivos de copia de seguridad guardados pueden guardar una piel de desarrollador –

+0

Comentario: (no crítica), Eso parece bueno principalmente para el desarrollo porque para leer archivos y pequeñas ediciones o notas sin importancia que es una gran parte del uso de vim para mucha gente, parece que es mejor dejar de lado un trabajo extra de contabilidad. Personalmente prefiero que todos los trabajos no tengan intercambios u otras copias de seguridad automáticas. Si realmente necesito desarrollar algo, prefiero tener un marco de más alto nivel para protegerme, preferiblemente con control de versión de código, etc. –

+0

@LelaDax Cierto, la mayoría de las veces estos archivos son en su mayoría inútiles porque uso git para todo mi código fuente. En raras ocasiones (como un accidente), sin embargo, han sido útiles. Pero en realidad, el historial de deshacer que uso mucho. Es mucho más fácil navegar tan rápido que comprobar git commits para ver el historial anterior.gundo hace que sea agradable y fácil navegar por el árbol de deshacer. Sin embargo, podría vivir sin los archivos de intercambio y copia de seguridad. – trusktr

0

Para cualquiera que trate de establecer esto para proyectos Rails, añadir

set directory=tmp,/tmp 

en su

~/.vimrc 

Así que los archivos .swp estarán en su lugar natural - el directorio tmp (por proyecto) .

2

crear ningún archivo de intercambio vim sólo para un archivo en particular

autocmd bufenter c:/aaa/Dropbox/TapNote/Todo.txt :set noswapfile 
+1

O para todos los archivos en un directorio particular, parece que funciona lo siguiente (solo pruebas breves): 'autocmd bufenter c:/aaa/Dropbox/TapNote/*: set noswapfile' – scottkosty

2

Si está utilizando git, puede agregar *.swp-.gitignore.

+0

¡Creo que eso es lo que necesitan la mayoría de los usuarios! Desactivar los archivos de intercambio es una mala práctica. – DenisKolodin

Cuestiones relacionadas