Manchmal fange ich an, Konfigurationsdateien /etc
mit Vim zu bearbeiten , vergesse aber, sudo
Vim mit zu starten. Das unvermeidliche Ergebnis ist dann, dass ich nach Abschluss meiner Änderungen den gefürchteten Hinweis erhalte, dass ich nicht die Berechtigung zum Speichern der Datei habe.
Meistens sind die Änderungen so klein, dass ich Vim einfach beende und das Ganze als root wieder mache. Ich könnte natürlich an einem Ort speichern, an den ich schreiben und dann als root kopieren kann, aber das ist auch etwas ärgerlich.
Aber ich bin mir sicher, dass es einen einfacheren Weg gibt, Root zu werden oder sudo
von Vim aus zu verwenden, ohne die Änderungen verwerfen zu müssen. Wenn sich die Methode nicht darauf verlassen würde sudo
, für den Benutzer eingerichtet zu werden, wäre dies sogar noch besser.
sudoedit
anstattvim
für alle Admin-Bearbeitung zu verwenden. Es ist eine Möglichkeit, nie mehr auf dieses Problem zu stoßen :). +1 für Gilles 'Antwort .Antworten:
sudo kann den effektiven Benutzer eines vorhandenen Prozesses nicht ändern. Es wird immer ein neuer Prozess mit erhöhten Rechten erstellt, und die ursprüngliche Shell bleibt davon unberührt. Dies ist eine Grundvoraussetzung für das UNIX-Design. Ich speichere die Datei meistens nur in / tmp, um das Problem zu umgehen. Wenn Sie es wirklich direkt speichern möchten, können Sie eine Funktion von Vim verwenden, mit der eine Datei an einen anderen Prozess weitergeleitet werden kann. Versuchen Sie mit diesem Befehl zu speichern:
Getestet und funktioniert. Vim fordert Sie dann auf, die Datei neu zu laden. Dies ist jedoch nicht erforderlich. Sie können einfach auf drücken o, um ein erneutes Laden und den Verlust Ihres Rückgängig-Verlaufs zu vermeiden. Sie können dies sogar in einem Vim-Befehl / einer Vim-Funktion speichern oder für einen einfachen Zugriff an eine Taste binden, aber das überlasse ich dem Leser als Übung.
quelle
%
den Pfad der Datei ersetzen , die Sie gerade bearbeiten.%
in Anführungszeichen setzen, falls der Dateiname ein Leerzeichen enthält.'modified'
Einstellung nicht zurückgesetzt . das kannst du manuell mit machenset nomodified
.exec 'w !sudo dd of=' . shellescape(expand('%'))
falls der Dateiname Anführungszeichen, Backslashes, Dollarzeichen usw. enthältSpeichern der Datei als root:
quelle
Rufen Sie
sudoedit
auf, um Dateien als root zu bearbeiten.Stellen Sie sich die Unannehmlichkeiten beim
vim
direkten Anrufen als Warnung vor, dass Sie zu lässig sind, um etwas potenziell Gefährliches zu tun.quelle
Sie können dies in Ihre setzen
.vimrc
Sie lösen es aus, indem Sie dies tun
:w!!
- es wird die Dateisudo tee
bis zum aktuellen Dateinamen (%
) durchschieben .Von https://stackoverflow.com/questions/95072/what-are-your-favorite-vim-tricks
quelle
!sudo sponge %
stattdessen einfach .Das funktioniert auch gut:
Dies wird durch den Kommentar von @ Nathan Long in dieser Antwort inspiriert .
HINWEIS :
"
muss anstelle von verwendet werden,'
da wir%
vor der Übergabe an Shell erweitert werden möchten .quelle