tags:

views:

2410

answers:

6

I've found that while using Vim on Windows Vim saves the file, a .ext.swp file that's deleted on closing the Vim window and a .ext~ file.

I assume the .ext.swp file is a session backup in case Vim crashes. What's the purpose of the .ext~ file however? Is this a permanent backup file? It's annoying as I'd like to copy all the files I'm working on to my host, without these duplicates. How can I turn this off or, if it's there for a good reason, hide the files?

+8  A: 
:set nobackup

will turn off backups. You can also set a backupdir if you still want those backup files but in a central folder. This way your working dir is not littered with ~ files.

You find more information on backups under :he backup.

f3lix
+4  A: 

You're correct that the .swp file is used by vim for locking and as a recovery file.

Try putting set nobackup in your vimrc if you don't want these files. See the Vim docs for various backup related options if you want the whole scoop, or want to have .bak files instead...

dwc
+1 for mentioning the purpose as a lock file. I didn't think of that.
Tomalak
+6  A: 

To turn off those files, just add these lines to .vimrc (vim configuration file on unix based OS):

set nobackup       #no backup files
set nowritebackup  #only in case you don't want a backup file while editing
set noswapfile     #no swap files
rogeriopvl
+23  A: 

The *.ext~ file is a backup file, containing the file as it was before you edited it.

The *.ext.swp file is the swap file, which serves as a lock file and contains the undo/redo history as well as any other internal info VIM needs. In case of a crash you can re-open your file and VIM will restore it's previous state from the swap file (which I find helpful, so I don't switch it off).

To switch off automatic creation of backup files, use (in your vimrc):

set nobackup
set nowritebackup

Where nowritebackup changes the default "save" behavior of VIM, which is:

  1. write buffer to new file
  2. delete the original file
  3. rename the new file

and makes VIM write the buffer to the original file (resulting in the risk of destroying it in case of an I/O error). But you prevent "jumping files" on the Windows desktop with it, which is the primary reason for me to have nowritebackup in place.

Tomalak
+3  A: 

And you can also set a different backup extension and where to save those backup (I prefer ~/.vimbackups on linux). I used to use "versioned" backups, via:

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

This sets a dynamic backup extension (ORIGINALFILENAM-YYYYMMDD-HHMMSS.vimbackup).

Zsolt Botykai
you might want to include how to set up the back up directory, i.e. putting `set backupdir=~/.vimbackups` in your ~/.vimrc
rampion
+4  A: 

I think the better solution is to place these lines in your vimrc file

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

You have to create a directory in your home directory called vimtmp for this to work.

That way you get the benefit of both worlds, you don't have to see the files, but if something does get futzed you can go get your backup file from vimtmp. Don't forget to clean the directory out every now and then.