A veces abrimos ficheros en vim con nuestro usuario actual, y resulta que el fichero sólo tiene permisos de escritura para root. A mí me pasa mucho con el /etc/hosts, y anda que no fastidia hacer todas las modificaciones y darte cuenta al final de que no puedes sobreescribir el fichero.
Hasta ahora lo que hacía es grabarlo con otro nombre y luego moverlo con sudo, pero eso se acabó gracias a este ingenioso truco:
:w !sudo tee %
Fijaos que lo que hace es pedir la escritura del fichero, pero acto seguido con ! la ejecución de un comando al que el fichero le entrará por la entrada estándar, este comando es sudo, que si está configurado y tras introducir nuestra contraseña, nos permite ejecutar lo siguiente como root: tee %, que lo que hace es escribir lo que le llegue a un fichero de nombre %, que es una macro sustituida por vim con el nombre de fichero actual.
¡Más tricky y más útil imposible!
Visto en Cantonmat.net gracias a Linux Magazine.