¿Escribir archivo vim como superusuario?


10

Este es un problema de usabilidad que me sucede a menudo:

Abro un archivo de sistema de solo lectura con vim, incluso lo edito, porque no estoy lo suficientemente atento o porque el vim en el sistema está mal configurado. Una vez que mis cambios están hechos, me veo obligado a escribirlos en un archivo temporal o perderlos, porque: w! no funciona

¿Existe un comando vim (: W !!!) que le permite escribir el búfer actual como superusuario? (Vim pediría su sudo o su contraseña naturalmente)



1
El SO definitivamente es un engaño, sin embargo, las dos preguntas SU abordan un problema separado resuelto con el sudoeditcomando. Esta pregunta se centra más en olvidarse de escribirla en primer lugar y elevarla después de iniciar el editor.
— heavyd

Respuestas:


15
:w !sudo tee % >/dev/null`

Explicación: Con !, puede ejecutar programas. Al prefijarlo con: w, el contenido del archivo (lo que tiene en vim, no el archivo original, más precisamente: el búfer) se le dará al comando en la entrada estándar. %se reemplaza por el nombre del archivo y >/dev/nullevita que el contenido se vuelva a imprimir en la pantalla (que es el comportamiento habitual de tee).

He encontrado un camino aún más corto. ddno se imprime en stdout para que pueda guardar lo nulo.

:w !sudo dd of=%

‍

Lo mismo es para :r, que inserta la salida del comando dado, por lo que puede insertar, por ejemplo, la fecha actual en su archivo utilizando:r !date


¡Muchas gracias, me hiciste la vida mucho mejor! (Brian también)
— zimbatm

Acabo de agregar un segundo método.
— Marian

Eso es realmente genial!
— Anthony Giorgio

no funciona con undofiles
— Christian Brabandt

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.