Einstellungen und Plugins beim root (`sudo vim`)?

15

Es ist wirklich frustrierend, wenn ich eine Datei als root bearbeiten und verwenden muss sudo vim somefile.confund keine meiner Tastenkombinationen, Einstellungen und Plugins verwenden kann.

Gibt es eine Möglichkeit, alle meine Anpassungen abzurufen, wenn ich sie als root bearbeiten muss?

Ich benutze Vim-Plug für meine Plugins.

Robbie Wxyz
quelle
5
Nebenbei bemerkt: sudo vim fileWird besser geschrieben als sudo -e file(vorausgesetzt, Sie setzen die Umgebungsvariable EDITOR=vim).
lcd047
@ lcd047: sollten Sie diesen Kommentar in einer Antwort machen
static_rtti

Antworten:

14

Anstatt vim als root zu öffnen, können Sie einfach als root speichern, indem Sie auf tee umleiten. Hier ist ein Beispiel:

:w !sudo tee % > /dev/null

Dies kann für den Alias ​​in Ihrer .vimrc nützlich sein. Ich verwende :Sw:

command! -nargs=0 Sw w !sudo tee % > /dev/null
user530873
quelle
4
Dies ist nützlich für die I did a bunch of editing and then realized I should have used sudoedit, aber für den allgemeinen Fall würde ich vorschlagen, mit sudo -e/ sudoedit.
Jamessan
7

Zwei Dinge:

  1. Verwenden Sie $ sudo -e filezum Bearbeiten filemit $EDITOR. Hinzufügen, export EDITOR=/path/to/vimwenn $EDITORnoch nicht festgelegt.

  2. Vanille ist ein ausgezeichneter Weg, um Ihre Plugin-Abhängigkeit zu bekämpfen.

romainl
quelle
-1 für das Vorschlagen Plugin sucht Recovery (J / K, keine wirklich downvote)
Robbie Wxyz
3
Beachten Sie, dass dies nicht wie vim als root ausgeführt sudo vimwird. Die Bearbeitung erfolgt als normaler Benutzer und sudo übernimmt dann die Aktualisierung der Originaldatei.
Jamessan,
Hinweis: Es gibt zwei ähnliche Optionen für sudo: -Eund -e. -Ebedeutet "Bewahrerumgebung", und dies ist nicht die, die Sie wollen. -ebedeutet wiederum "keinen Befehl ausführen, sondern eine Datei mit einer definierten Prozedur bearbeiten".
iksemyonov
3

Es sieht so aus, als müsstest du nur root's ~/.vimrcund ~/.vim/your's verknüpfen .

Einfach als root ausführen:

ln -s /home/<user>/.vimrc /root/.vimrc
ln -s /home/<user>/.vim/ /root/.vim/

Und das sollte es tun!

(PS: Ich habe das gerade herausgefunden und wollte es mit anderen Noobs teilen. Bitte lass es mich wissen, wenn es einen besseren Weg gibt.)

Robbie Wxyz
quelle
1
Dies kann häufig zu Problemen führen, da einige vim-bezogene Dateien als Root in Ihr Ausgangsverzeichnis geschrieben werden und später Fehler auftreten, wenn Sie versuchen, Ihre eigene vim-Konfiguration als eigener Benutzer auszuführen.
Caleb
0

Wenn Sie im Voraus wissen, dass Sie eine Datei als root bearbeiten müssen, verwenden Sie die Befehle sudoedit <file>oder sudo -e <file>richten Sie sie in einer speziellen Umgebung mit Ihren üblichen Editoreinstellungen ein. Eine Kopie der Datei wird erstellt und Ihr Editor wird gestartet, um sie zu bearbeiten (als Ihr Benutzer). Wenn Sie das Programm beenden, wird die Datei als root an ihren ursprünglichen Speicherort zurückkopiert.

Dies ist der sicherste und empfohlene Weg, aber für den Fall, dass Sie a) nicht im Voraus erkennen, dass Sie als root schreiben müssen oder b) inkrementelle Änderungen bearbeiten und speichern möchten, benötigen Sie etwas anderes. Zu diesem Zweck ist die sudo tee von smpl vorgeschlagene Lösung auf jeden Fall auf dem richtigen Weg, aber es gibt einige geringfügige Verbesserungen, die bei der Behandlung von Randfällen vorgenommen werden können. Insbesondere der Unterschied in der Behandlung der sudo-Passwortabfrage in einer GUI im Vergleich zu Konsolenoberflächen ist einige Aufmerksamkeit wert.

Eine einfachere Möglichkeit, dies einzurichten, ist die Verwendung des vim-eunuch- Plugins. Es hat dieses spezielle Problem und ein paar andere nützliche Dinge in einem praktischen Paket zusammengefasst. Die Bedienung ist so einfach wie das Aufrufen :SudoWrite. Ich verwende sogar eine etwas einfachere Zugriffszuordnung:

cmap w!! call SudoWrite()

Das sollte Ihnen die Möglichkeit geben, eine beliebige Datei als root mit zu schreiben :w!!.

Caleb
quelle
-1

Eine andere Option ist das Ausführen sudo -E vim somefile.confzum Bearbeiten, wodurch Ihre Umgebung .vimrcgeschont wird. Daher werden Ihre und Plugins verwendet.

RSabet
quelle
Hey, guter Trick! Das ist sehr nützlich für Vi und viele andere Befehle.
Robbie Wxyz,
3
Dies hat die gleichen Nebenwirkungen wie das Verknüpfen Ihrer Konfiguration mit dem Stammverzeichnis: Alle vim-Vorgänge oder Plug-ins, die Statusdaten schreiben, werden in Ihrem Stammverzeichnis ausgeführt. Diese Dateien gehören letztendlich root und verursachen später Fehler, da Ihr normaler Benutzer sie nicht weiter verwenden kann.
Caleb