【问题标题】:vim changes modification time of folder on saving file in it under windows 7vim 在 Windows 7 下更改文件夹在保存文件时的修改时间
【发布时间】:2018-03-14 21:34:23
【问题描述】:

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

在我用 vim 编辑了一些源文件之前它似乎工作得很好,它也更新了包含文件夹的修改日期。首先我认为这是因为 vim 在编辑源所在的目录中添加了一个交换文件。所以我在 _vimrc 文件中设置 directory 指向另一个位置。

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

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

我在 Windows 上使用 gVim 8.0.586,但 gVim nightly (8.0.1605)、neovim (v0.2.2-1173-gc46d6f8da)、cygwin vim (8.0 1-1376) 给了我相同的结果,即使使用 " clean" _vimrc 只设置目录

用 Notepad++ 或 Atom 编辑同一个源文件只会改变文件的修改时间,而不是包含它的目录的修改时间。

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

编辑

5月我也有这两行_vimrc

set backup                      " make backup files        
set backupdir=~/.vim/backup     " where to put backup files

正如 Wumpus 建议的那样,我尝试关闭 backupwritebackup,它确实有效,但我没有任何备份文件。 :(

:set nobackup nowritebackup

_vimrc中没有设置writebackup,所以默认开启。

【问题讨论】:

    标签: vim


    【解决方案1】:

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

    vim 在写入文件的新版本之前会创建一个备份,以便在崩溃时恢复旧版本。

    您可以使用:set nobackup nowritebackup 关闭备份或使用:set backupdir=someplaceelse 更改位置

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

    【讨论】:

    • 感谢您的快速回答!如果我设置 :set nobackup nowritebackup 文件夹的修改日期没有改变,你是对的。但在正常情况下,我将它们都打开,backupdir 指向不同的位置。见编辑。
    • :set backupcopy=yes 工作正常! :) 谢谢你的帮助!
    猜你喜欢
    • 1970-01-01
    • 2021-09-08
    • 1970-01-01
    • 1970-01-01
    • 2011-01-15
    • 1970-01-01
    • 2014-03-11
    • 2012-05-23
    • 1970-01-01
    相关资源
    最近更新 更多