我一直在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,因此默认情况下它处于启用状态。
答案 0 :(得分:2)
可能是创建和删除备份文件。
vim在编写新版本的文件之前会创建一个备份,因此您可以在发生崩溃时恢复旧版本。
您可以使用:set nobackup nowritebackup
关闭备份,或使用:set backupdir=someplaceelse
backupcopy
选项也可能有一些效果。它可以尝试将新文件重命名到位。为yes
尝试no
和backupcopy
,看看是否存在差异。但请注意还有其他副作用......请参阅:help backupcopy
。行为可能取决于您的backupdir
是否在同一个文件系统上。