Vim-Datei als Superuser schreiben?


10

Dies ist ein Usability-Problem, das mir häufig passiert:

Ich öffne eine schreibgeschützte Systemdatei mit vim und bearbeite sie sogar, weil ich nicht aufmerksam genug bin oder weil das vim auf dem System schlecht konfiguriert ist. Sobald meine Änderungen vorgenommen wurden, muss ich sie nicht mehr in eine temporäre Datei schreiben oder verlieren, weil: w! wird nicht funktionieren.

Gibt es einen vim-Befehl (: W !!!), mit dem Sie als Superuser den aktuellen Puffer schreiben können? (Vim würde natürlich nach Ihrem sudo oder su Passwort fragen)



1
Die SO ist definitiv ein Betrüger, jedoch behandeln die beiden SU-Fragen ein separates Problem, das mit dem sudoeditBefehl gelöst wurde . Diese Frage konzentriert sich mehr darauf, zu vergessen, sie zuerst einzugeben und nach dem Starten des Editors zu erhöhen.
schwer

Antworten:


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

Erläuterung: Mit !können Sie Programme ausführen. Durch das Präfix: w wird der Inhalt der Datei (das Material, das Sie in vim haben, nicht die Originaldatei, genauer: der Puffer) dem Befehl bei der Standardeingabe übergeben. %wird durch den Dateinamen ersetzt, und es wird >/dev/nullvermieden, dass der Inhalt erneut auf dem Bildschirm gedruckt wird (was das übliche Verhalten von ist tee).

Ich habe einen noch kürzeren Weg gefunden. ddwird nicht in stdout gedruckt, sodass Sie die Nullsache speichern können.

:w !sudo dd of=%

Gleiches gilt für :r, wodurch die Ausgabe des angegebenen Befehls eingefügt wird, sodass Sie beispielsweise das aktuelle Datum mithilfe von in Ihre Datei einfügen können:r !date


Vielen Dank, du hast mein Leben viel besser gemacht! (Brian auch)
Simbatm

Ich habe gerade eine zweite Methode hinzugefügt.
Marian

Das ist wirklich ordentlich!
Anthony Giorgio

funktioniert nicht mit Undofiles
Christian Brabandt

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.