Scrivi il file vim come superutente?


10

Questo è un problema di usabilità che mi capita spesso:

Apro un file di sistema di sola lettura con VIM, anche modificandolo, perché non sono abbastanza attento, o perché il VIM sul sistema non è configurato correttamente. Una volta fatte le mie modifiche, sono bloccato a doverle scrivere in un file temporaneo o a perderle, perché: w! non funzionerà.

Esiste un comando vim (: W !!!) che ti consente di scrivere il buffer corrente come superutente? (Vim richiederebbe naturalmente la tua password sudo o su)



1
La SO è sicuramente una copia, tuttavia le due domande SU affrontano un problema separato risolto con il sudoeditcomando. Questa domanda è più focalizzata sull'oblio di digitarla in primo luogo e sollevarsi dopo aver avviato l'editor.
pesante

Risposte:


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

Spiegazione: Con !, è possibile eseguire programmi. Con il prefisso: w, il contenuto del file (le cose che hai in vim, non il file originale, più precisamente: il buffer) verrà dato al comando sullo standard input. %viene sostituito dal nome del file ed >/dev/nullevita che il contenuto venga nuovamente stampato sullo schermo (che è il solito comportamento di tee).

Ho trovato un modo ancora più breve. ddnon stampa su stdout in modo da poter salvare la cosa nulla.

:w !sudo dd of=%

​‍

Lo stesso vale per :r, che inserisce l'output del comando dato, quindi è possibile ad esempio inserire la data corrente nel file utilizzando:r !date


Grazie mille, mi hai reso la mia vita molto migliore! (Anche Brian)
zimbatm,

Ho appena aggiunto un secondo metodo.
Marian,

È davvero pulito!
Anthony Giorgio,

non funziona con file undofiles
Christian

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.