Avvia Vim come mio utente con i privilegi di root


10

Ho i miei file Vim personalizzati ~/.vime le impostazioni in ~/.vimrc. Tuttavia, a volte devo modificare alcuni file /etce così via.
Se inizio Vim in questo modo:

$ sudo vim /etc/rc.conf

Perdo la mia configurazione poiché Vim usa quella predefinita. Quindi: come posso eseguire Vim con i privilegi di root per modificare i file senza perdere le impostazioni del mio utente (che sono nella mia home directory)?
Ho provato:

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

ma Bash mi dà Permission denied. Tuttavia, il comando sopra lavora per esempio per: /etc/acpi/handler.sh. Perché?

Nota: il nome utente non è root.

Risposte:


15

Invece di sudo vim /etc/rc.confusare sudoedit /etc/rc.confo sudo -e /etc/rc.conf. Potrebbe essere necessario impostare la variabile di ambiente EDITOR su vim. Questo eseguirà vim stesso come l'utente normale, usando la tua normale configurazione, su una copia del file che verrà copiato all'uscita.


Bella soluzione! Controllerò anche questo.
rubik,

Ho provato sudoedit /etc/rc.confe sudo -e /etc/rc.confsi apre vim, ma il mio ~ / .vimrc non viene caricato. Cosa sto facendo di sbagliato?
apparat

@apparat Prova export EDITOR=vimprima: potrebbe essere in esecuzione vi, che non so se carica vimrc anche quando è vim.
Casuale 832

Bene, penso che questa sia la risposta migliore. Grazie ad entrambi.
rubik,

@ Random832 ha export EDITOR=vimfunzionato. Pensavo che vi non fosse installato sul mio sistema ed è solo un link simbolico a vim. Grazie
apparat,

6

Puoi usare -uper dire a vim quale file rc caricare. per esempio

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

se digitarlo ogni volta che è necessario farlo è noioso, creare un alias:

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

Nota che vim -upotrebbero causare errori nei plugin o chiamati file rc se caricano altri file relativamente a $ HOME - $ HOME è ora la home directory di root, non quella dell'utente. Ciò può essere risolto, ad esempio, con collegamenti simbolici nella home directory di root o con percorsi assoluti di codifica rigida.


Fantastico, grazie. Ho risolto in questo modo: alias svim="HOME=/home/user && sudo vim -u $HOME/.vimrc".
rubik,

1

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

Ciò equivale a:

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

e può anche essere aliasato:

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

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.