:wq in Vim does not save

vim
71,926

Solution 1

You need to open the file using superuser permissions as follows:

sudo vi /etc/dhcp/dhcpd.conf

edit the file by pressing i and then save and exit by pressing Esc and then either :wq or :x or just :w to save.


Thanks to Riking for suggesting sudoedit: you can use sudoedit /path/to/file/filename for editing files owned by root rather than using sudo <editor> /pat/to/file/filename. This is useful for enterprise-level machines or production machines since sudoedit logs to /var/log/auth.log.

If you want to change the default editor for sudoedit, do the following:

sudo update-alternatives --config editor

and then press Return and choose the editor of your choice and again press Return.


See also: A discussion on redit on why sudoedit may be advantegeous

Solution 2

/etc consists of all configurations files so to edit the files under /etc you need the superuser permissions but sometime we forget to use sudo. but at that time we can also use

:w !sudo tee %

then enter your administrator password

:q!

to exit successfully

Share:
71,926
Mohammad Reza Rezwani
Author by

Mohammad Reza Rezwani

Msc of computer networks.

Updated on September 18, 2022

Comments

  • Mohammad Reza Rezwani
    Mohammad Reza Rezwani over 1 year

    I am trying to use :wq to save a text file I have edited in Vim, but when I enter :wq I get the error

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

    When I add ! to :wq like :wq!, I get this:

    "/etc/dhcp/dhcpd.conf"
    
    "/etc/dhcp/dhcpd.conf" E212: Can't open file for writing
    

    The file I want to edit is dhcpd on the /etc/dhcpd path.

    How can I do this?

    • Hauleth
      Hauleth almost 10 years
      Prefer :x or ZZ to exit and save. It will write only on change.
  • Riking
    Riking almost 10 years
    I prefer sudoedit for these situations - it creates a temporary copy, runs the editor, and copies the result. If you previously chose nano for that command, run EDITOR=vi sudoedit /etc/file.
  • Sajesh Kumar
    Sajesh Kumar almost 8 years
    You can add cmap w!! w !sudo tee > /dev/null % to your .vimrc to allow saving via this method with :w!!. If you're interested in why this method works see stackoverflow.com/questions/2600783/…
  • muru
    muru almost 8 years
    sudoedit also picks up on the EDITOR variable, it's easier to set that than configure alternatives