即使使用了 sudo,vim 也无法写入文件

5 vim root sudo privileges elevation

我发现vim,如果我尝试编辑一个作为普通用户我没有写访问权限的文件,即使我使用sudo,我也无法写入它,尽管如果我nano用来编辑同一个文件它可以工作。

例如,如果我这样做:

sudo vim /var/path/to/file.conf
Run Code Online (Sandbox Code Playgroud)

我将在文件中获取此信息,但无法编辑该文件:

"/var/path/to/file.conf" [readonly]
Run Code Online (Sandbox Code Playgroud)

但如果我改为:

sudo nano /var/path/to/file.conf
Run Code Online (Sandbox Code Playgroud)

它将能够写入文件,为什么会这样,为什么不像它那样sudo提供vim写访问权限nano?这是某种错误吗?或者这只是注定的事情?因为它非常烦人。


操作系统信息:

Description:    Ubuntu 15.04
Release:    15.04
Run Code Online (Sandbox Code Playgroud)

包装信息:

vim:
  Installed: 2:7.4.488-3ubuntu2
  Candidate: 2:7.4.488-3ubuntu2
  Version table:
 *** 2:7.4.488-3ubuntu2 0
        500 http://gb.archive.ubuntu.com/ubuntu/ vivid/main amd64 Packages
        100 /var/lib/dpkg/status
Run Code Online (Sandbox Code Playgroud)

Eli*_*gan 13

这是 vim(和 vi)的预期行为。

当您编辑只读文件时,尝试以通常的方式(使用:w)写入文件失败。这是为了防止您意外更改您可能不想更改的只读文件。

如果您真的想覆盖您拥有的文件的只读权限,并将您的更改写入该文件,您必须使用该:w!命令,以便 vim 知道这是您想要的。

  • 这类似于:q如果有未保存的更改,则不会退出,但是:q!会。

如果您想写入任何更改并在一个命令中退出,您可以使用:wq!:x!

  • 如果您使用“-R”访问文件,也会发生这种情况。您可以从 vim 中的联机帮助页中使用 `:help readonly` 阅读有关此内容以及更多内容。 (2认同)
  • 使用 sudo 时它不起作用,即使使用 :w! 任何的想法? (2认同)