¿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.