184

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

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

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

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

编辑

哎呀,重复:

为什么 Vim 使用 ~ 扩展名保存文件?

我从那里采用了rogeriopvl的回答

逐字复制:

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

7 回答 7

87

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

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

set swapfile
set dir=~/tmp

也可以看看

:help swap-file
于 2009-04-15T07:48:29.433 回答
61

把它放在你的 .vimrc 配置文件中。

set nobackup
于 2009-04-13T06:10:13.400 回答
39

; 让 Windows 用户回到临时目录

set backup
set backupdir=C:\WINDOWS\Temp
set backupskip=C:\WINDOWS\Temp\*
set directory=C:\WINDOWS\Temp
set writebackup
于 2011-06-16T05:20:02.297 回答
14

在 Windows 上将以下行添加到 _vimrc

" store backup, undo, and swap files in temp directory
set directory=$HOME/temp//
set backupdir=$HOME/temp//
set undodir=$HOME/temp//
于 2017-04-07T19:56:29.790 回答
13

This answer applies to using gVim on Windows 10. I cannot guarantee the same results for other operating systems.

Add:

set nobackup
set noswapfile
set noundofile

To your _vimrc file.

Note: This is the direct answer to the question (for Windows 10) and probably not the safest thing to do (read the other answers), but this is the fastest solution in my case.

于 2017-08-17T03:08:45.297 回答
11

我制作了一个名为“noswapsuck”的插件,仅当缓冲区包含未保存的更改时才启用交换文件。保存更改后,将清除交换文件。因此,与磁盘上的文件包含相同内容的交换文件将被删除。

在这里获取:noswapsuck.vim

它对我来说效果很好,但我以前从未公开过它,所以我欢迎反馈。

优点:

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

缺点:

  • 如果缓冲区有交换文件,则在第一次打开文件时不会检测到它。只有在启用时才会检测到它swapfile,即当您开始编辑缓冲区时。那太烦人了,会打断你。 (已解决:我们现在在打开缓冲区时检查预先存在的交换文件,方法是swapfile再次临时打开该选项。)

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

    :let g:NoSwapSuck_CloseSwapfileOnWrite = 0
    

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

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

于 2014-11-24T19:08:03.803 回答
6

我在我的 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
于 2020-05-04T04:06:13.953 回答