%
is replaced with the current file name, thus you can use:
:w !sudo tee %
(vim
will detect that the file has been changed and ask whether you want to it to be reloaded.)
As a shortcut, you can define define your own command. Put the following in your .vimrc
:
command W w !sudo tee % >/dev/null
With the above you can type :W<Enter>
to save the file. Since I wrote this, I have found a nicer way (in my opinion) to do this:
cmap w!! w !sudo tee >/dev/null %
This way you can type :w!!
and it will be expanded to the full command line, leaving the cursor at the end, so you can replace the %
with a file name of your own, if you like.