Démarrez Vim en tant qu'utilisateur avec des privilèges root

10

J'ai mes fichiers Vim personnalisés et mes ~/.vimparamètres dans ~/.vimrc. Cependant, parfois je dois éditer certains fichiers dans /etcet autres.
Si je démarre Vim comme ceci:

$ sudo vim /etc/rc.conf

Je perds ma configuration car Vim utilise sa configuration par défaut. Alors: comment puis-je exécuter Vim avec les privilèges root pour éditer des fichiers sans perdre les paramètres de mon utilisateur (qui se trouvent dans mon répertoire personnel)?
J'ai essayé:

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

mais Bash me donne Permission denied. Cependant, la commande ci - dessus fonctionne par exemple pour: /etc/acpi/handler.sh. Pourquoi donc?

Remarque: le nom d'utilisateur n'est pas root.

rubik
la source

Réponses:

15

Au lieu d' sudo vim /etc/rc.confutiliser sudoedit /etc/rc.confou sudo -e /etc/rc.conf. Vous devrez peut-être définir la variable d'environnement EDITOR sur vim. Cela exécutera vim lui-même en tant qu'utilisateur normal, en utilisant votre configuration normale, sur une copie du fichier qu'il recopiera lorsque vous quitterez.

Aléatoire832
la source
Bonne solution! Je vais vérifier cela aussi.
rubik
J'ai essayé sudoedit /etc/rc.confet sudo -e /etc/rc.confcela ouvre vim, mais mon ~ / .vimrc ne se charge pas. Qu'est ce que je fais mal?
apparat
@apparat Essayez d' export EDITOR=vimabord - il peut essayer de s'exécuter vi, ce que je ne sais pas s'il charge vimrc même quand c'est vim.
Random832
Eh bien, je pense que c'est la meilleure réponse. Merci à vous deux.
rubik
@ Random832 a export EDITOR=vimfonctionné. Je pensais que vi n'est pas installé sur mon système et n'est qu'un lien symbolique vers vim. Merci
apparat
6

Vous pouvez utiliser -upour indiquer à vim quel fichier rc charger. par exemple

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

si taper cela chaque fois que vous devez le faire est fastidieux, créez un alias:

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

Notez que cela vim -upeut entraîner l'échec des plugins ou des fichiers rc appelés s'ils chargent d'autres fichiers par rapport à $ HOME - $ HOME est désormais le répertoire personnel de root, et non celui de l'utilisateur. Cela peut être résolu avec, par exemple, des liens symboliques dans le répertoire personnel de root ou par des chemins absolus de codage en dur.

cas
la source
C'est bien merci. Je résolu comme ceci: alias svim="HOME=/home/user && sudo vim -u $HOME/.vimrc".
rubik
1

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

Cela équivaut à:

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

et peut également être aliasé:

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

Amos Baker
la source