我在 Linux 虚拟机内的 Vim 中打开了一个文件,然后尝试在 Windows 主机上打开该文件,然后我不要收到“交换文件 blah.swp 已存在!”的警告(该文件被共享给来宾。)我想要这个警告,因为这是我可以发现我已经在其他地方编辑该文件的唯一方法,就像在本例中,在虚拟机中!
无论我是先在 Windows 上编辑文件,然后在虚拟机中使用 Linux 上的 Vim,还是在 Linux 虚拟机中编辑文件,然后在 Windows 上的 Vim 中打开文件:都是相同的结果,没有警告。您可以说从 Linux 到 Windows 的行为是统一的。在这两种情况下,Vim 都会.swo
默默地创建一个文件,而不会像(我认为)应该的那样进行抱怨。但是,如果文件已在 VM 上打开,但在 VM 上第二次打开,我做收到警告,Windows 上也有同样的情况(对于那些想询问我的 Vim 设置的人)。
阅读:help recovery
并不能提供任何信息。两种情况下的版本都是 Vim 7.4。
答案1
我猜想 Vim 不会将交换文件识别为属于已编辑的文件。
Vim 交换文件包含已编辑文件的路径名。这是有道理的,因为您可以将交换文件放在编辑文件之外的另一个目录中。显然,Vim 检查找到的交换文件中的路径名是否与要编辑的文件匹配。您的情况并非如此,因为一个路径位于 Linux VM 中,另一路径位于 Windows 下。
不幸的是,我在 Vim 手册中找不到该理论的证明,而且我现在没有时间在源代码中验证它。
答案2
我想尝试重新启动系统,看看这种情况是否仍然发生,并且果然解决了它,所以显然这是一个奇怪的暂时现象。我可能会保留此线程以防其他人看到此问题。我首先想到这个解决方案是因为我想我记得在另一台具有类似虚拟机设置的机器上做了同样的事情,并且那里没有出现问题。事实上确实如此。另一台机器上也有同样的情况做过按应有的方式显示警告。因此,重新启动后,警告会再次出现。