6

I find that with vim, if I try and edit a file which as a normal user I do not have write access with, even if I use sudo, I am unable to write to it, although if I use nano to edit the same file it works.

So for instance if I do:

sudo vim /var/path/to/file.conf

I will get this in the file and not be able to edit that file:

"/var/path/to/file.conf" [readonly]

But if I instead do:

sudo nano /var/path/to/file.conf

It will be able to write to the file, why is this, why does sudo not give vim write access like it does with nano? Is this some sort of bug? Or is this just something which is meant to be? Because it is very annoying.


OS Information:

Description:    Ubuntu 15.04
Release:    15.04

Package Information:

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

1 Answers1

15

This is the intended behavior of vim (and vi).

When you edit a readonly file, attempting to write the file the usual way (with :w) fails. This is to prevent you from accidentally changing a readonly file you might not wish to change.

If you really want to override the readonly permissions on a file that you own, and write your changes to the file, you must use the :w! command so vim knows this is what you want.

  • This is similar to how :q will not quit if there are unsaved changes, but :q! will.

If you want to write any changes and quit in one command, you can use :wq! or :x!.

Eliah Kagan
  • 119,640