:w !sudo tee % >/dev/null'
Explicação: Com !
, você pode executar programas. Prefixando-o com: w, o conteúdo do arquivo (o material que você tem no vim, não o arquivo original, mais precisamente: o buffer) será dado ao comando na entrada padrão. %
é substituído pelo nome do arquivo e >/dev/null
evita que o conteúdo seja novamente impresso na tela (que é o comportamento usual de tee
).
Eu encontrei um caminho ainda mais curto. dd
não imprime para stdout, então você pode salvar a coisa nula.
:w !sudo dd of=%
O mesmo vale para :r
, que insere a saída do comando especificado, para que você possa, por exemplo, inserir a data atual em seu arquivo usando :r !date