vim some/path/newfile
创建一个文件,并编辑后尝试保存,vim会提示错误。
E212 Can't open file for writing.
这似乎只会在新文件位于系统目录时发生。
:w! 无法覆盖此错误。
如何在不必将其保存到临时位置,退出,然后使用sudo重命名的情况下写入当前缓冲区?
这将要求您输入root密码,然后按照您的要求保存更改:
:w !sudo tee %
然后在提示符处输入(L)oad,以便在保存文件后重新加载该文件。
您可以先使用mkdir创建文件夹,然后再进行保存。
.vimrc
文件中:
cmap w!! %!sudo tee > /dev/null
然后,您可以执行
:w!!
当你进入这个位置后,它将使用sudo来编写文件,非常方便。
!sudo tee > /dev/null
,但它只显示n“行过滤”,文件实际上并没有被创建。看起来是/dev/null导致了这个问题? - StuWeldonw!!
比我的解决方案容易记多了。在我的OS X上,我使用的是cmap w!! %!sudo tee %
。 - Brent Faust您可以通过使用“sudo”来启动编辑会话来避免此问题。
sudo vi name-of-file
如果在Windows 7或更高版本中出现这种情况,请以管理员身份运行VI编辑器。右键单击应用程序并选择“以管理员身份运行”。这个问题将会被解决。此外,该错误是由于管理权限引起的。
你可以分两步来完成这个任务,首先使用mkdir命令创建'some'和'path'文件夹;其次进入'path'文件夹,使用sudo vim newfile命令创建新文件,最后保存即可。
:help message
以获取有关此错误消息和其他错误消息的更多信息。一旦文档出现,尝试通过键入/E212
进行搜索。您也可以在线查看文档,网址为http://vimdoc.sourceforge.net/htmldoc/message.html,并使用CTRL-F查找相关内容。
:cd ORIGINAL_FOLDER_PATH
将当前目录改回来,以解决这个问题并能够再次保存。 - Zenul_Abidin就算可能不怎么值得,你也应该确保在尝试保存文件的分区中有足够的存储空间。我不得不释放一些 /home 目录下的空间,这解决了问题。
我知道这是一个老问题,但这是我解决它的方法。你的文件可能被设置为不可变的,这意味着你无法编辑它。
你可以使用 lsattr /path/to/file.txt
来检查。
如果是这样,使用 chattr -i /etc/resolv.conf
来使其不再是不可变的。
w
和!
之间加一个空格,它也可以工作。(至少在我使用更重的 vimvim-gtk
而不仅仅是轻量级的vim
的 Linux 中,这个方法对我有效,虽然我相信在普通的 vim 中它也会同样有效。)不过,我不知道Peter
的答案。w!!
对我也有效。 - dylnmc