如何防止vim创建(和留下)临时文件?

如何防止vim创建(和留下)临时文件?,vim,text-editor,temporary-files,Vim,Text Editor,Temporary Files,为什么vim创建~文件?有没有办法禁用它 如果是为了备份(或别的什么),我会使用git 此外,这些.swp文件也是 我如何告诉vim不要创建这些,或者至少在它自己之后进行清理 编辑 哎呀,重复: 我从那里领养的 逐字复制: set nobackup "no backup files set nowritebackup "only in case you don't want a backup file while editing set noswapfile "no sw

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

如果是为了备份(或别的什么),我会使用git

此外,这些
.swp
文件也是

我如何告诉vim不要创建这些,或者至少在它自己之后进行清理

编辑

哎呀,重复:

我从那里领养的

逐字复制:

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

将其放入.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
我制作了一个名为“noswapsuck”的插件,它只在缓冲区包含未保存的更改时启用交换文件。保存更改后,将清除交换文件。因此,包含与磁盘上文件相同内容的交换文件将被删除

在这里获取:

它一直对我很有效,但我以前从未公开过,所以我欢迎反馈

优点:

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

  • 如果缓冲区具有交换文件,则在首次打开文件时不会检测到该文件。仅当启用了
    交换文件
    时,即您开始编辑缓冲区时,才会检测到它。太晚了,会打扰你的。(已解决:我们现在通过再次临时打开
    swapfile
    选项,在打开缓冲区时检查预先存在的swapfile。)

  • 如果您工作的环境希望最大限度地减少磁盘写入(例如,低功耗、通过网络安装的文件或编辑大型文件),则每次保存和编辑时都要删除并重新创建交换文件并不理想。在这种情况下,您可以执行以下操作:

    :let g:NoSwapSuck_CloseSwapfileOnWrite = 0
    
    这将在写入后保留交换文件,但在缓冲区失去焦点时仍将删除它


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

在Windows上添加以下行到

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

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

加:

到您的_vimrc文件


注意:这是问题的直接答案(适用于Windows 10),可能不是最安全的做法(阅读其他答案),但这是我最快的解决方案。

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

嗯,我从来都不需要那些带有记事本++,除非你说vim会经常崩溃!不,我并不是说vim经常崩溃(尽管我见过它崩溃)。但在我的工作环境中,与我正在工作的某台主机的网络连接非常不稳定,因此会发生中断编辑。交换文件帮助。@user55400听说过GNU/Screen吗?(或者tmux,或者这个日语的替代品)我在Windows上把这个添加到了我的vimrc文件中,我仍然得到file~文件。我做得不对吗?@noirc我建议不要使用/tmp。如果整个系统崩溃,您需要重新启动,您的交换文件将消失。Git将永远不会帮助您在系统崩溃后恢复工作。Git也可以忽略你的*.swp文件=可能重复相关文章-我们已经在Windows8.1上用Vim完成了这项工作。交换文件仍然存在。Shaun,您可能需要将“set noswapfile”添加到您的.vimrc中,以防止创建新的交换文件,如对原始问题的编辑中所述。作为
set
关键字前面前缀的
如何?需要吗?它看起来不像注释。@Stephane a
前缀意味着它是在命令模式下完成的,但在编写Vimrc时不需要
,这不是一个好主意。上面提到的让这些文件放在temp/文件夹中已经好得多了。我必须添加set undodir=C:\WINDOWS\t这对我不起作用-我必须使用set dir=$temp
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