A veces empiezo a editar archivos de configuración en /etc
usando Vim, pero olvídate de usar sudo
para iniciar Vim. Entonces, el resultado inevitable es que después de terminar mis ediciones me encuentro con el temido aviso de que no tengo permiso para guardar el archivo.
La mayoría de las ediciones son lo suficientemente pequeñas como para salir de Vim y hacer todo de nuevo como root. Por supuesto, podría guardar en una ubicación en la que pueda escribir y luego copiar como root, pero eso también es algo molesto.
Pero estoy seguro de que hay una manera más fácil de convertirse en root o usar sudo
desde dentro de Vim, sin tener que descartar los cambios. Si el método no se basara en sudo
siendo configurado para el usuario que sería aún mejor.
Respuesta aceptada:
sudo no puede cambiar el usuario efectivo de un proceso existente, siempre crea un nuevo proceso que tiene los privilegios elevados y el shell original no se ve afectado. Este es un elemento fundamental del diseño UNIX. La mayoría de las veces solo guardo el archivo en /tmp como solución alternativa. Si realmente desea guardarlo directamente, puede intentar usar una función de Vim donde puede canalizar un archivo a otro proceso. Intenta guardar con este comando:
:w !sudo dd of=%
Probado y funciona. Luego, Vim le pedirá que vuelva a cargar el archivo, pero no es necesario:simplemente presione o para evitar recargar y perder su historial de deshacer. Incluso puede guardar esto en un comando/función de Vim o incluso vincularlo a una tecla para facilitar el acceso, pero lo dejaré como ejercicio para el lector.