在 Ubuntu 26.04 上用 Vim 编辑一些系统配置文件时,经常会遇到这种情况:
编辑一切正常,最后执行 :wq 保存退出时,突然报错:
E212: Can't open file for writing
或者直接提示:没有权限。
这并不是 Vim 出了问题,而是典型的 Linux 文件权限问题。
为什么会没有权限?
Ubuntu 出于系统安全考虑:
- 普通用户只能修改自己目录下的文件
/etc、/usr、系统配置文件等都属于 root 权限- 直接用
vim 文件名是以普通用户身份运行,自然无法写入
如何定制化自己的VIM可以参考《ubuntu26.04 怎么设置让vim更加顺手》
正确解决方法(推荐)
不要强行改文件权限,直接用 sudo 提权 运行 Vim 即可:
sudo vim 你要编辑的文件
例如修改 apt 源:
sudo vim /etc/apt/sources.list
编辑完成后,正常执行:
:wq
就能顺利保存退出。
已经编辑了一半,不想重新打开怎么办?
如果你已经用普通用户 Vim 改了很多内容,不想放弃修改,可以在 Vim 内执行:
:w !sudo tee %
解释:
:w写入!sudo调用系统 sudo 命令tee将内容写入文件%代表当前文件
执行后会提示输入密码,输入完成即可保存。
之后可以用 :q! 强制退出,或直接 :q。
不推荐的做法
- 不要随意
chmod 777 文件名,会带来安全风险 - 不要长期使用 root 账号操作,容易误删系统文件
总结
在 Ubuntu 26.04 上编辑系统文件,记住一句话:
不确定权限时,直接用 sudo vim,一步解决无权限保存问题。
以后再遇到 Vim 提示 Can't open file for writing,就不用再慌啦。