抱歉新手问题。我想知道,vim如何设法写一个只读文件。我对文本文件有555个权限。但是,当我打开&写点什么,然后:w! ,我对文件所做的更改已保存。我想知道vim是如何在后台做这个的!!是暂时将权限更改为755并写入并恢复权限?请指教。
答案 0 :(得分:7)
编辑:我最初回答的是关于UNIX权限如何工作的正确但最终无关的信息:这不是Vim正在做的事情。
确实,你是对的:当你发布:w!
并且你在UNIX上时,如果需要,Vim会添加写权限:
/* When using ":w!" and the file was read-only: make it writable */
if (forceit && perm >= 0 && !(perm & 0200) && st_old.st_uid == getuid()
&& vim_strchr(p_cpo, CPO_FWRITE) == NULL)
{
perm |= 0200;
(void)mch_setperm(fname, perm);
made_writable = TRUE;
}
然后将其重置:
if (made_writable)
perm &= ~0200; /* reset 'w' bit for security reasons */
它也反映在帮助中:
注意:这可能会更改权限和所有权 文件和中断(符号)链接。添加'W'标志 'cpoptions'以避免这种情况。