Save a file you edited in vim without the needed permissions
Some handy Vim tips
If you have been working on linux for any amount of time, you would at some time experienced the error:
E212: Can't open file for writing
This means essentially you forgot to include the sudo command before opening the file in question.
There have been a number of solutions to this problem, you can choose the solution that works for you.
Solution 1: Redo all changes but with sudo
This is probably what you do now
:q!
sudo !!
You have to re-create all changes that you did prior to remembering that you needed to open the file with sudo. Obviously this is less than ideal. It does however teach you a lesson ;)
Solution 2: Copy to a temp file
This solution is one level better than the above solution, but still is not optimal as it involves a temporary file
:w /tmp/hosts.temp
:q!
sudo mv /tmp/hosts.temp /etc/hosts
Solution 3: Use tee and sudo
This is the top rated solution on www.commandlinefu.com and involves using tee and sudo:
:w !sudo tee %
This solution does have the advantage that it avoids the temporary file in solution 2, it does however force you to remember a command that is quite complex. Fortunately, there is a solution. First edit your .vimrc file
vim ~/.vimrc
Append on the end of the file
ca w!! w !sudo tee "%"
Now the next time you edit a file without the correct priviledges, you can simply
:w!!
Hope this little tutorial helps you out, if you have any other ideas that can help, please leave a comment below
Cheers