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

我发现,在Windows上使用Vim时,Vim会保存文件,一个在closuresVim窗口和.ext.swp文件时被删除的.ext~文件。

我假设.ext.swp文件是Vim崩溃时的会话备份。 然而.ext~文件的目的是什么? 这是一个永久的备份文件? 这是烦人的,因为我想复制我正在工作的所有文件到我的主机,没有这些重复。 我怎么能把这个关掉,或者如果有一个很好的理由, 隐藏文件

*.ext~文件是一个备份文件,包含在编辑之前的文件。

*.ext.swp文件是交换文件,用作锁文件,包含撤销/重做历史logging以及Vim需要的其他内部信息。 在发生崩溃的情况下,您可以重新打开文件,Vim将从交换文件恢复其以前的状态(我觉得这很有帮助,所以我不会将其closures)。

要closures自动创build备份文件,请使用(在你的vimrc中):

 set nobackup set nowritebackup 

nowritebackup改变了Vim默认的“保存”行为,即:

  1. 将缓冲区写入新文件
  2. 删除原始文件
  3. 重命名新文件

并使Vim将缓冲区写入原始文件(在发生I / O错误的情况下导致其破坏的风险)。 但是你可以防止Windows桌面上的“跳转文件”,这是我使用nowritebackup主要原因。

我认为更好的解决scheme是把这些行放在你的vimrc文件中

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

您必须在您的主目录中创build一个名为vimtmp的目录才能运行。

这样你就可以得到两个世界的好处,你不需要看文件,但是如果有东西被破坏,你可以从vimtmp获取备份文件。 不要忘了每隔一段时间清理一下目录。

要closures这些文件,只需将这些行添加到.vimrc(在基于Unix的OS上的vimconfiguration文件):

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

将closures备份。 如果您仍然需要这些备份文件,但是在中央文件夹中,也可以设置backupdir。 这样你的工作目录不会散布〜文件。

您可以在备份下find有关备份的更多信息。

你也可以设置不同的备份扩展名和保存这些备份的位置(我更喜欢Linux上的~/.vimbackups )。 我曾经使用“版本化”的备份,通过:

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

这设置了一个dynamic备份扩展( ORIGINALFILENAME-YYYYMMDD-HHMMSS.vimbackup )。

你是正确的, .swp文件被vim用于locking和恢复文件。

如果你不想要这些文件,请尝试把你的vimrc中的set nobackup 。 如果你想要整个文件,或者想要.bak文件,请参阅Vim文档中的各种备份相关选项。

我唯一的select是把这行放在我的〜/ .vimrc文件中

设置noundofile

引用备份文件的其他选项并不妨碍创build以〜(代字号)结尾的临时文件

把这行放到你的vimrc

 set nobk nowb noswf noudf " nobackup nowritebackup noswapfile noundofile 

在Windows中,将为所有用户的系统范围vimconfiguration的C:\Program Files (x86)\vim\_vimrc文件。

设置最后一个noundofile在Windows中很重要,以防止在编辑后创build*~ 〜tilda文件。


我希望Vim默认包含这行。 没有人喜欢丑陋的目录。

让用户select是否以及如何首先启用高级备份/撤消文件function。

这是Vim中最烦人的部分。

下一步是设置set noeb vb t_vb=禁用哔声:P