The Vim Trick Which Will Save Your Time and Nerves

jovica - Sep 11 '18 - - Dev Community

Whether you're beginner or advanced Vim user, I'm sure you've seen this at least once:

E45: 'readonly' option is set (add ! to override)
Enter fullscreen mode Exit fullscreen mode

It usually goes like this:

You open a file with Vim and make some changes. When you try to save the file and see the message above.

Then you realize that you didn’t run Vim with sudo?! Argh, so annoying isn't it?

Today, you're gonna learn how to solve this easily, and once for all.

It's very simple, all you need to do is to add this line to your .vimrc:

cnoremap w!! execute 'silent! write !sudo tee % >/dev/null' <bar> edit!
Enter fullscreen mode Exit fullscreen mode

When you get to the same situation again and you can't save your file, simply run :w!! command, and your changes will be saved!

Now, how this works:

  • cnoremap - tells Vim that the following mappings that is used when in command-line mode
  • w!! - the mapping (shortcut) itself.
  • execute '<command>' - executes a command between the quotes
  • silent! - run it silently
  • write !sudo tee % >/dev/null - the magic trick which would take another post to explain
  • <bar> edit! - this calls the edit command to reload the buffer and then avoid messages such as "the buffer has changed".

Hint: you need to type :w!! fast, so it expands into the full command. Typing these four strings slowly and hitting Enter won't work.


I share tips like this at Mastering Vim Quickly Newsletter.

I also wrote a book Mastering Vim Quickly: From WTF to OMG in no time

You can also get the best Vim tips by following @MasteringVim

. . . . .
Terabox Video Player