我目前正在使用 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
设置为no
Vim,则通过创建新文件而不是写入现有文件来保存文件,因此这会导致您看到的情况。
因此,有两个可能的解决方法:
- 设置备份副本vim 中的选项
yes
create mask = 0644
在 Samba 配置中为相关共享设置(或其他设置)
答案2
最好的办法是,gVim 中有一个设置涵盖已保存文件的权限。如果 gVim 中没有该设置,那么你可能运气不佳。但是,由于这可能是 Windows gVim 中的一个错误,你可以考虑将其报告给开发人员。