如何防止vim创建(和离开)临时文件?

时间:2009-04-13 06:07:55

标签: vim text-editor temporary-files

为什么vim会创建<filename>~个文件?有没有办法禁用它?

如果是备份(或其他),我会使用git。

此外,这些.<filename.with.path.hints>.swp文件也是。

我如何告诉vim不要创建它们,或者至少要自行清理?

修改

哎呀,重复:

  

Why does Vim save files with a ~ extension?

我从那里采用了rogeriopvl's answer

逐字复制:

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

7 个答案:

答案 0 :(得分:66)

我强烈建议继续使用交换文件(如果Vim崩溃)。

您可以设置存储交换文件的目录,这样它们就不会混乱您的正常目录:

set swapfile
set dir=~/tmp

另见

:help swap-file

答案 1 :(得分:55)

将它放在.vimrc配置文件中。

set nobackup

答案 2 :(得分:29)

对于Windows用户,请返回临时目录

set backup
set backupdir=C:\WINDOWS\Temp
set backupskip=C:\WINDOWS\Temp\*
set directory=C:\WINDOWS\Temp
set writebackup

答案 3 :(得分:10)

我制作了一个名为&#34; noswapsuck&#34;只有在缓冲区包含未保存的更改时才启用交换文件。保存更改后,将清除交换文件。因此,将删除包含与磁盘上文件相同内容的交换文件。

在此处获取:noswapsuck.vim

它对我来说一直很好,但我以前从未公开过,所以我很乐意接受反馈。

优点:

  • 保留在磁盘上的唯一交换文件将是与文件实际不同的重要交换文件!

缺点:

  • 如果缓冲区有交换文件,则首次打开文件时将不会检测到它。只有在启用swapfile时才会检测到它,即开始编辑缓冲区时。这很烦人,并且会打断你。(已解决:我们现在通过暂时再次打开swapfile选项来检查打开缓冲区时预先存在的交换文件。)

  • 如果您在想要最小化磁盘写入的环境中工作(例如,低功耗,或通过网络安装的文件,或编辑大文件),那么继续删除和重新写入是不理想的在每次保存和编辑时创建交换文件。在这种情况下,你可以这样做:

    :let g:NoSwapSuck_CloseSwapfileOnWrite = 0
    

    将在写入后保留交换文件,但在缓冲区失去焦点时仍会将其删除。

顺便说一句,我有另一个小插件:DiffAgainstFileOnDisk,它在点击(r)ecover后非常有用,可以检查你恢复的缓冲区是否比现有文件更新或更旧,或者与之相同

答案 4 :(得分:5)

在Windows上,将以下行添加到_vimrc

" store backup, undo, and swap files in temp directory
set directory=$HOME/temp//
set backupdir=$HOME/temp//
set undodir=$HOME/temp//

答案 5 :(得分:4)

此答案适用于在Windows 10上使用gVim。我无法保证其他操作系统的结果相同。

添加:

set nobackup
set noswapfile
set noundofile

到你的_vimrc文件。

注意:这是问题的直接答案(对于Windows 10),可能不是最安全的事情(请阅读其他答案),但这是我案例中最快的解决方案。

答案 6 :(得分:2)

我在Ubuntu .vimrc中具有此设置。我的项目文件中没有任何交换文件。

set undofile
set undolevels=1000         " How many undos
set undoreload=10000        " number of lines to save for undo

set backup                        " enable backups
set swapfile                      " enable swaps
set undodir=$HOME/.vim/tmp/undo     " undo files
set backupdir=$HOME/.vim/tmp/backup " backups
set directory=$HOME/.vim/tmp/swap   " swap files

" Make those folders automatically if they don't already exist.
if !isdirectory(expand(&undodir))
    call mkdir(expand(&undodir), "p")
endif
if !isdirectory(expand(&backupdir))
    call mkdir(expand(&backupdir), "p")
endif
if !isdirectory(expand(&directory))
    call mkdir(expand(&directory), "p")
endif