vim在Windows 7下更改文件夹中保存文件的修改时间

时间:2018-03-14 11:55:44

标签: vim

我一直在Windows 7下开发一个perl应用程序,它有一个子程序,列出给定目录中的所有源文件。为了在下次运行中节省时间,找到的源文件被写入缓存(普通txt文件)。然后,只有在源文件夹下有更改时才会更新此缓存。我假设我可以检查文件夹的修改时间,以检查文件是否被删除或添加,并仅在需要时更新缓存文件。

它似乎运行良好,直到我用vim编辑了一些源文件,这也更新了包含文件夹的修改日期。首先我认为这是因为vim将交换文件添加到编辑后的源所在的目录中。因此,我将 _vimrc 文件中的目录设置为指向其他位置。

set directory=~/.vim/swap       " directory to place swap files in

设置后,源文件夹中没有添加交换文件,但保存文件后目录的修改时间改为

我使用gVim 8.0.586 for Windows但gVim nightly(8.0.1605),neovim(v0.2.2-1173-gc46d6f8da),cygwin vim(8.0 1-1376)给了我相同的结果,即使a"清洁" _vimrc 仅设置目录

使用Notepad ++或Atom编辑相同的源文件只会更改文件的修改时间,而不会更改包含它的目录的修改时间。

有没有人知道什么会导致vim的这种行为?

修改

我在 _vimrc

中也有这两行
set backup                      " make backup files        
set backupdir=~/.vim/backup     " where to put backup files

正如Wumpus建议我试图关闭备份 writebackup ,它确实有效,但我没有任何备份文件。 :(

:set nobackup nowritebackup

未在 _vimrc 中设置了writebackup,因此默认情况下它处于启用状态。

1 个答案:

答案 0 :(得分:2)

可能是创建和删除备份文件。

vim在编写新版本的文件之前会创建一个备份,因此您可以在发生崩溃时恢复旧版本。

您可以使用:set nobackup nowritebackup关闭备份,或使用:set backupdir=someplaceelse

更改位置

backupcopy选项也可能有一些效果。它可以尝试将新文件重命名到位。为yes尝试nobackupcopy,看看是否存在差异。但请注意还有其他副作用......请参阅:help backupcopy。行为可能取决于您的backupdir是否在同一个文件系统上。