Iniciar Vim como mi usuario con privilegios de root

10

Tengo mis archivos Vim personalizados ~/.vimy configuraciones en ~/.vimrc. Sin embargo, a veces tengo que editar algunos archivos /etcy tal.
Si comienzo a Vim así:

$ sudo vim /etc/rc.conf

Pierdo mi configuración ya que Vim usa la predeterminada. Entonces: ¿cómo puedo ejecutar Vim con privilegios de root para editar archivos sin perder la configuración de mi usuario (que está en mi directorio de inicio)?
Yo he tratado:

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

pero Bash me da Permission denied. Sin embargo, el comando anterior funciona, por ejemplo, para: /etc/acpi/handler.sh. ¿Porqué es eso?

Nota: el nombre de usuario no es root.

rubik
fuente

Respuestas:

15

En lugar de sudo vim /etc/rc.confusar sudoedit /etc/rc.confo sudo -e /etc/rc.conf. Es posible que deba establecer la variable de entorno EDITOR en vim. Esto ejecutará vim como el usuario normal, usando su configuración normal, en una copia del archivo que copiará nuevamente cuando salga.

Aleatorio832
fuente
Buena solución! Voy a ver esto también.
rubik
Lo intenté sudoedit /etc/rc.confy sudo -e /etc/rc.confabre vim, pero mi ~ / .vimrc no se carga. ¿Que estoy haciendo mal?
apparat
@apparat Inténtelo export EDITOR=vimprimero: puede estar intentando ejecutarse vi, lo que no sé si carga vimrc incluso cuando es vim.
Random832
Bueno, creo que esta es la mejor respuesta. Gracias a los dos.
rubik
@ Random832 export EDITOR=vimfuncionó. Pensé que vi no está instalado en mi sistema y es solo un enlace simbólico a vim. Gracias
apparat
6

Puede usar -upara decirle a vim qué archivo rc cargar. p.ej

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

si escribir eso cada vez que necesita hacerlo es tedioso, haga un alias:

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

Tenga en cuenta que vim -upuede hacer que los complementos o los archivos llamados rc fallen si cargan otros archivos relacionados con $ HOME - $ HOME ahora es el directorio de inicio de la raíz, no el del usuario. Esto se puede resolver con, por ejemplo, enlaces simbólicos en el directorio de inicio de la raíz o codificando rutas absolutas.

cas
fuente
Eso es genial, Gracias. He resuelto de esta manera: alias svim="HOME=/home/user && sudo vim -u $HOME/.vimrc".
rubik
1

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

Esto es equivalente a:

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

y puede ser alias también:

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

Amos Baker
fuente