[我最初在 vi/vim stackexchange 上发布了有关此问题的文章,但越来越明显的是,核心问题更多的是文件系统,而不是抱怨它的编辑器]
TL;DR —— CIFS 挂载上的文件在后台“发生变化”,当我尝试写入这些文件时,Vim 会发出警报。我需要帮助让 Vim 平静下来或消除潜在的“修改”噪音。
背景:
- 我有一个 Linux 来宾虚拟机(Arch/Manjaro-i3 64 位)在 Windows 10 主机下的 VirtualBox 上运行。
- 主机有一个格式化为 NTFS 的分区,旨在在两者之间共享。
- 共享分区通过标准 Windows 10 共享进行共享,并作为 /etc/fstab 中的 cifs 驱动器安装在 Linux 客户机上。
- 我正在使用 vim 8.1 从来宾系统编辑文件。
问题:
- 大多数时候(显然是随机的)我尝试:写一个我在 vim 中编辑的文件,我得到
警告:该文件自阅读后已被更改!
- 我知道两次写入之间磁盘上的内容没有改变。
我想防止虚假警告,并更好地了解如何检查其来源。
基本上,在我将文件写入磁盘后,就会立即触发对该文件的修改。我怀疑 Samba 基础设施,但我不确定如何确定这一点。我查看过 strace 日志,但我不太擅长理解这些数据。
我怀疑问题是 vim 认为它为文件添加时间戳和 Samba 最终看到写操作时记录的时间戳之间存在一些延迟,因此 vim 认为它可能已过期。
但我不确定……如果这是真的,我仍然没有足够的悟性来解决它。
建议?
答案1
我建议关闭该磁盘的 Windows 自动磁盘优化器。 Linux 在记录日志时会查看磁盘上的位置,而 Windows 则不会。所以即使它的位置改变了一点点,对于 Linux 来说它已经不一样了。
那应该可以解决你的问题!
https://www.top-password.com/blog/disable-automatic-drive-optimization-defrag-in-windows-10/