对不起新手问题.我想知道,vim如何设法写一个只读文件.我对文本文件有555个权限.但是,当我打开并写一些东西时,它会:w!,我对文件所做的更改已保存.我想知道vim是如何在后台做这个的!! 是暂时将权限更改为755并写入并恢复权限?请指教.
编辑:我最初回答了有关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;
}
Run Code Online (Sandbox Code Playgroud)
然后重新将其重置:
if (made_writable)
perm &= ~0200; /* reset 'w' bit for security reasons */
Run Code Online (Sandbox Code Playgroud)
它也反映在帮助中:
注意:这可能会更改
文件和中断(符号)链接的权限和所有权.将'W'标志添加到'cpoptions'以避免这种情况.