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

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

这似乎一直很好地工作,直到我使用vim编辑了一些源文件,它也更新了包含文件夹的修改日期。起初,我认为是因为vim向编辑的源位置添加了交换文件。因此,我在_vimrc文件中设置了目录指向另一个位置。

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

在设置后,源文件夹中没有添加换页文件,但目录的修改时间在保存文件后改变了。我使用的是gVim 8.0.586 for Windows,但即使使用“干净”的vim(8.0 1-1376)、neovim(v0.2.2-1173-gc46d6f8da)和cygwin vim,它们只设置了directory,也给出了同样的结果。使用Notepad++或Atom编辑相同的源文件只会改变该文件的修改时间,而不是包含它的目录的修改时间。有没有人知道是什么原因导致vim表现出这种行为?编辑后,我也在我的_vimrc中加入了这两行代码:
set backup                      " make backup files        
set backupdir=~/.vim/backup     " where to put backup files

如 Wumpus 建议,我尝试关闭了备份和写入备份,确实起到了作用,但是我没有任何备份文件。 :(
:set nobackup nowritebackup

如果在_vimrc文件中没有设置writebackup,则默认为开启状态。

1个回答

2
这可能是备份文件的创建和删除。
在写入新版本文件之前,vim会创建一个备份文件,以防发生崩溃,您可以通过备份文件获得旧版本。
您可以使用:set nobackup nowritebackup关闭备份,或者使用:set backupdir=someplaceelse更改备份位置。 backupcopy选项也可能产生一些影响。它可以尝试将新文件重命名为原来的文件。尝试使用yesno来设置backupcopy,看看是否有区别。但请注意其他副作用...请参见:help backupcopy。并且行为可能取决于您的backupdir是否在同一文件系统上。

感谢您的快速回复!如果我设置:set nobackup nowritebackup,文件夹的修改日期不会改变,您是正确的。但在正常情况下,我都已将它们都打开,并将backupdir指向另一个位置。请参见编辑部分。 - it3q
1
:set backupcopy=yes 运行良好! :) 感谢您的帮助! - it3q

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接