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

为什么 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
125184 次浏览

将此文件放入. vimrc 配置文件中。

set nobackup

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

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

set swapfile
set dir=~/tmp

参见

:help swap-file

; Windows 用户返回到临时目录

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

我开发了一个名为“ noswap吮”的插件,它只在缓冲区包含未保存的更改时启用 swapfile。保存更改后,将清除交换文件。因此,包含与磁盘上的文件相同内容的 swapfiles 将被删除。

看这里: noswapsuck.vim

它一直对我很有效,但我以前从来没有宣传过它,所以我欢迎反馈。

优点:

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

缺点:

  • < strike > 如果缓冲区有一个交换文件,那么在首次打开文件时将不会检测到它。只有在启用 swapfile时(即开始编辑缓冲区时)才能检测到它。太晚了,会打断你的。 (已解决: 我们现在通过再次临时打开 swapfile选项,在打开缓冲区时检查预先存在的交换文件。)

  • 如果你的工作环境中需要尽量减少磁盘写入(比如低功耗,或者通过网络挂载的文件,或者编辑一个大文件) ,那么在每次保存和编辑时都要删除并重新创建交换文件就不是一个理想的做法。在这种情况下,你可以:

    :let g:NoSwapSuck_CloseSwapfileOnWrite = 0
    

    它会在写入之后保留交换文件,但是当缓冲区失去焦点时仍然会删除它

顺便说一下,我有另一个小插件 :DiffAgainstFileOnDisk,它可以非常有用后,打 (r)ecover,检查如果你恢复的缓冲区是新的或旧的比现有的文件,或完全相同。

在 Windows 上,将以下行添加到 _ vimrc

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

这个答案适用于在 Windows10上使用 gVim。我不能保证其他操作系统也能得到同样的结果。

地址:

set nobackup
set noswapfile
set noundofile

到 _ vimrc 文件。

注意: 这是这个问题的直接答案(对于 Windows10) ,可能不是最安全的做法(阅读其他答案) ,但在我的情况下,这是最快的解决方案。

我在我的 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