vim如何写入只读文件?

6

对于新手问题表示抱歉。我想知道 vim 如何管理只读文件。我对文本文件有555权限。但是,当我打开它并写入一些东西然后 :w! ,我所做的更改被保存了。我好奇 vim 是如何在后台处理这个任务的!!难道它是先将权限暂时更改为755,然后再恢复权限并写入吗?请给我解答。

1个回答

9

编辑:我最初回答了关于UNIX权限如何工作的正确但最终与Vim无关的信息:那不是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 */

这也反映在帮助文件中:

注意: 这可能会更改文件的权限和所有权,并破坏(符号)链接。将“cpoptions”中的“W”标志添加到避免此问题。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接