Vim无法保存文件(E212)

Stu*_*don 42 macos vim

有时当我使用创建文件时vim some/path/newfile,vim允许我编辑它,只是在我尝试保存更改时抱怨.

E212 Can't open file for writing.
Run Code Online (Sandbox Code Playgroud)

这似乎只在新文件位于系统目录中时才会发生.

:w! 不会覆盖此错误.

如何编写当前缓冲区,而不必将其保存到临时位置,退出,然后使用sudo重命名它?

Bre*_*ust 61

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

:w !sudo tee %
Run Code Online (Sandbox Code Playgroud)

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

  • 它说我"shell返回1" (2认同)

Gan*_*ank 14

你可以先mkdir,然后保存.

  • 这没有用.问题不在于不存在的目录.它是关于将现有文件编辑为(例如)普通用户,而文件只能由root用户编写.在这种情况下,没有要创建的缺失目录. (4认同)

Pet*_*ter 12

将此行添加到您的.vimrc:

cmap w!! %!sudo tee > /dev/null
Run Code Online (Sandbox Code Playgroud)

然后你就可以做到

:w!!
Run Code Online (Sandbox Code Playgroud)

当你进入这个位置,它将使用sudo写入文件.非常便利.

  • 好主意 - "w !!"比我的解决方案更容易记住.在OS X上对我有用的是`cmap w !! %!sudo tee%` (4认同)

小智 9

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

sudo vi name-of-file
Run Code Online (Sandbox Code Playgroud)