Starten Sie Vim als meinen Benutzer mit Root-Rechten

10

Ich habe meine benutzerdefinierten Vim-Dateien ~/.vimund Einstellungen in ~/.vimrc. Manchmal muss ich jedoch einige Dateien in /etcund so bearbeiten .
Wenn ich Vim so starte:

$ sudo vim /etc/rc.conf

Ich verliere meine Konfiguration, da Vim die Standardkonfiguration verwendet. Also: Wie kann ich Vim mit Root-Rechten ausführen, um Dateien zu bearbeiten, ohne die Einstellungen meines Benutzers (die sich in meinem Home-Verzeichnis befinden) zu verlieren?
Ich habe versucht:

$ su username -c "vim /usr/lib/python2.7/setuptools/dist.py"

aber Bash gibt mir Permission denied. Der obige Befehl funktioniert jedoch beispielsweise für : /etc/acpi/handler.sh. Warum ist das so?

Hinweis: Der Benutzername ist nicht root.

rubik
quelle

Antworten:

15

Anstelle von sudo vim /etc/rc.confverwenden sudoedit /etc/rc.confoder sudo -e /etc/rc.conf. Möglicherweise müssen Sie die Umgebungsvariable EDITOR auf vim setzen. Dadurch wird vim selbst als normaler Benutzer unter Verwendung Ihrer normalen Konfiguration auf einer Kopie der Datei ausgeführt, die beim Beenden zurückkopiert wird.

Random832
quelle
Schöne Lösung! Ich werde das auch überprüfen.
Rubik
Ich habe es versucht sudoedit /etc/rc.confund sudo -e /etc/rc.confund es öffnet vim, aber mein ~ / .vimrc wird nicht geladen. Was mache ich falsch?
Apparat
@apparat Versuchen Sie es export EDITOR=vimzuerst - es wird möglicherweise versucht zu laufen vi, was ich nicht weiß, ob es vimrc lädt, auch wenn es vim ist.
Random832
Nun, ich denke das ist die beste Antwort. Danke euch beiden.
Rubik
@ Random832 hat export EDITOR=vimfunktioniert. Ich dachte, vi ist nicht auf meinem System installiert und nur ein Symlink zu vim. Danke
Apparat
6

Sie können -uvim mitteilen, welche RC-Datei geladen werden soll. z.B

sudo vim -u ~user/.vimrc /etc/rc.conf

Wenn die Eingabe jedes Mal mühsam ist, erstellen Sie einen Alias:

alias sudovim='sudo vim -u ~user/.vimrc'

Beachten Sie, vim -udass Plugins oder aufgerufene RC-Dateien fehlschlagen können, wenn andere Dateien relativ zu $ ​​HOME geladen werden. $ HOME ist jetzt das Ausgangsverzeichnis von root und nicht das des Benutzers. Dies kann zB mit Symlinks im Home-Verzeichnis von root oder durch Hardcodierung absoluter Pfade gelöst werden.

cas
quelle
Das ist super, Danke. Ich habe so gelöst : alias svim="HOME=/home/user && sudo vim -u $HOME/.vimrc".
Rubik
1

sudo vim -S /home/user/.vimrc /etc/rc.conf

Dies entspricht:

sudo vim /etc/rc.conf + :source /home/user/.vimrc

und kann auch als Alias ​​verwendet werden:

alias svim='sudo vim -S /home/user/.vimrc'

Amos Baker
quelle