如何保存我在 vim 中以错误的用户身份打开的文件?

How can I save a file I opened in vim as the wrong user?

我经常遇到这种情况。我以普通用户身份登录并使用 vim 开始编辑文件。编辑完成后,当我尝试保存文件时,我没有足够的权限来保存文件。我必须关闭文件,以 root 身份登录并重新开始编辑。以下是 vim 中的给定错误:

E45: 'readonly' option is set (add ! to override)

或者在普通 vi 中:

File is read only

有没有不用离开编辑器就可以保存的方法?

试试下面的命令

:w !sudo tee %

说明

  • :w – 写
  • !sudo – 调用 shell sudo 命令
  • tee – write (:w) 命令的输出使用 tee 重定向
  • % – 当前文件名

More info

E45:'readonly' 选项已设置(添加 ! 以覆盖)

按 Esc,然后输入 :qa!然后按 Enter

只需输入带有 sudo 的命令,例如 sudo vi filename.txt

然后,点击 i,编辑您想要更改的内容并点击 Esc。 那么:wq

:w /tmp/xyz
:q!

/tmp 应该始终对每个人都可写。 然后 mv 或 cp 文件 /tmp/xyz 作为原始文件所在的正确用户