62

Sometimes when I create a file using vim some/path/newfile, vim lets me edit it, only to complain when I attempt to save my changes.

E212 Can't open file for writing.

This appears to happen only when the new file is located in a system directory.

:w! does not override this error.

How can I write the current buffer, without having to save it to a temporary location, exit, then rename it using sudo?

4

10 回答 10

100

这将要求您输入 root 密码,然后按照您的要求保存更改:

:w !sudo tee %

然后在提示符下键入 (L)oad,以在文件保存后重新加载文件。

于 2013-02-19T01:49:47.540 回答
18

Add this line to your .vimrc:

cmap w!! %!sudo tee > /dev/null

and then you can do

:w!!

when you get into this position, and it will write the file using sudo. Very handy.

于 2013-02-19T01:44:51.020 回答
17

你可以先mkdir,然后保存。

于 2014-07-14T18:09:52.420 回答
7

您可以通过使用“sudo”启动编辑会话来避免此问题。

sudo vi name-of-file
于 2020-11-27T22:27:54.843 回答
3

如果在 Windows 7 或更高版本中出现这种情况,请以管理员身份运行 VI 编辑器。右键单击应用程序并选择“以管理员身份运行”。这个问题将得到解决。此外,错误是由于管理权限。

于 2015-03-01T20:15:55.900 回答
3

如果您想要一个强大、易于记忆的解决方案并且不介意安装插件,请尝试SudoEdit.vim - 使用 sudo 或 su 或任何其他工具编辑文件

于 2013-02-19T08:13:11.313 回答
3

vim 一些/路径/新文件

您可以尝试分两步进行,首先使用 mkdir ~ 创建文件夹 'some' 和 'path';其次进入 'path' 文件夹,使用命令:sudo vim newfile.然后保存

于 2018-04-11T15:03:07.243 回答
2

确保您尝试保存文件的目录存在并且您有权编辑该文件。

您可以输入:help messageVim 以获取有关此错误消息和其他错误消息的更多信息。/E212一旦文档出现,请尝试通过键入进行搜索。您还可以在http://vimdoc.sourceforge.net/htmldoc/message.html和 CTRL-F 上在线查看文档以找到它。

于 2020-02-14T01:04:03.310 回答
0

对于它的价值,您可能还希望确保在尝试保存文件的分区中有足够的存储空间。我不得不在我的 /home 驱动器中释放一些空间,这解决了这个问题。

于 2019-05-08T17:08:46.357 回答
0

我知道这是一个老问题,但这就是为我解决的问题。您的文件可能设置为不可变,这意味着您无法对其进行编辑。

你可以检查这个lsattr /path/to/file.txt

如果它 chattr -i /etc/resolv.conf用于使其不再不可变。

于 2022-02-18T17:54:47.177 回答