防止 Windows 版 Vim 破坏其他文件系统权限

防止 Windows 版 Vim 破坏其他文件系统权限

我目前正在使用 Windows 版本的 gVim 来编辑映射到 Linux 系统的网络驱动器上的源文件,以及在 cygwin 中创建的本地文件。

问题是 Windows 版本的 gVim 破坏了相应系统上的原始文件权限。例如:cygwin 上的文件默认为 077。使用 Windows 版本的 vim 编辑时,它们会保存为 777。使用 ms-notepad(以及我尝试过的所有其他编辑器)时甚至不会出现此问题,所以我不太清楚 gVim 为什么会这样做。

一种可能的解决方案是使用 cygwin 的 gVim 来处理所有事情,但这相当麻烦,因为它需要运行 x11 环境来支持它,并且当在网络驱动器上工作时从 gVim(或 vim)内部运行某些命令时会导致一些问题。

有什么想法我可以如何维护现有的文件权限?

编辑:今天早上在另一台机器上,cygwin 的问题没有发生。Cygwin 和 gVim 是同一版本,但是另一台机器运行的是 WinXP,而出现问题的机器运行的是 Win7。

答案1

我非常确定这与 Windows 和 Unix/Linux 上权限处理方式的差异有关。默认情况下,在 Windows 的 Samba 共享上创建的文件始终具有 777 权限。如果backupcopy设置为noVim,则通过创建新文件而不是写入现有文件来保存文件,因此这会导致您看到的情况。

因此,有两个可能的解决方法:

  • 设置备份副本vim 中的选项yes
  • create mask = 0644在 Samba 配置中为相关共享设置(或其他设置)

Samba 中的文件权限信息

答案2

最好的办法是,gVim 中有一个设置涵盖已保存文件的权限。如果 gVim 中没有该设置,那么你可能运气不佳。但是,由于这可能是 Windows gVim 中的一个错误,你可以考虑将其报告给开发人员。

相关内容