Manchmal beginne ich mit der Bearbeitung von Konfigurationsdateien in /etc
mit Vim, aber vergessen Sie, sudo
zu verwenden um Vim zu starten. Das unvermeidliche Ergebnis ist dann, dass ich nach Abschluss meiner Bearbeitungen auf den gefürchteten Hinweis stoße, dass ich nicht die Berechtigung zum Speichern der Datei habe.
Meistens sind die Änderungen klein genug, dass ich Vim einfach beende und das Ganze als root erneut mache. Ich könnte natürlich an einem Ort speichern, an den ich schreiben kann und dann als root kopieren, aber das ist auch etwas nervig.
Aber ich bin mir sicher, dass es einen einfacheren Weg gibt, root zu werden oder sudo
zu verwenden aus Vim heraus, ohne die Änderungen verwerfen zu müssen. Wenn die Methode nicht auf sudo
angewiesen wäre noch besser wäre es, für den Benutzer eingerichtet zu werden.
Akzeptierte Antwort:
sudo kann den effektiven Benutzer eines vorhandenen Prozesses nicht ändern, es erstellt immer einen neuen Prozess mit erhöhten Rechten und die ursprüngliche Shell bleibt davon unberührt. Dies ist eine Grundlage des UNIX-Designs. Meistens speichere ich die Datei als Workaround einfach in /tmp. Wenn Sie es wirklich direkt speichern möchten, können Sie versuchen, eine Funktion von Vim zu verwenden, mit der eine Datei an einen anderen Prozess weitergeleitet werden kann. Versuchen Sie, mit diesem Befehl zu speichern:
:w !sudo dd of=%
Getestet und funktioniert. Vim fordert Sie dann auf, die Datei neu zu laden, aber das ist unnötig:Sie können einfach o drücken um ein erneutes Laden und den Verlust Ihres Undo-Verlaufs zu vermeiden. Sie können dies sogar in einem Vim-Befehl/einer Vim-Funktion speichern oder es für einen einfachen Zugriff sogar an eine Taste binden, aber ich überlasse das als Übung dem Leser.