¿Configuración y complementos cuando root (`sudo vim`)?

15

Es realmente frustrante cuando necesito editar un archivo como root y usarlo sudo vim somefile.confy no puedo usar ninguna de mis combinaciones de teclas, configuraciones y complementos.

¿Hay alguna forma de obtener todas mis personalizaciones cuando necesito editar como root?

Estoy usando vim-plug para mis complementos.

Robbie Wxyz
fuente
55
En una nota al margen: sudo vim filese escribe mejor como sudo -e file(siempre que establezca la variable de entorno EDITOR=vim).
lcd047
@ lcd047: debe hacer ese comentario en una respuesta
static_rtti

Respuestas:

15

En lugar de abrir vim como root, simplemente puede guardar como root redirigiendo a tee. Aquí hay un ejemplo:

:w !sudo tee % > /dev/null

Esto puede ser útil para alias en su .vimrc, yo uso :Sw:

command! -nargs=0 Sw w !sudo tee % > /dev/null
usuario530873
fuente
44
Esto es útil para el I did a bunch of editing and then realized I should have used sudoedit, pero para el caso general sugeriría usar sudo -e/ sudoedit.
jamessan
7

Dos cosas:

  1. Use $ sudo -e filepara editar filecon $EDITOR. Agregar export EDITOR=/path/to/vimsi aún $EDITORno está configurado.

  2. Ir a la vainilla es una excelente manera de combatir su adicción a los complementos.

romainl
fuente
-1 por sugerir la recuperación de la adicción a los complementos (J / K, realmente no hay
voto negativo
3
Tenga en cuenta que esto no se ejecuta vim como root, como lo sudo vimhace. La edición ocurre como su usuario normal y luego sudo maneja la actualización del archivo original.
jamessan
Nota: hay dos opciones similares a sudo: -Ey -e. -Esignifica "entorno de preservación", y este no es el que desea. -e, a su vez, significa "no ejecutar un comando, sino editar un archivo con un procedimiento definido".
iksemyonov
3

Parece que todo lo que tienes que hacer es vincular la raíz del enlace simbólico ~/.vimrcy la ~/.vim/tuya.

Solo ejecuta como root:

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

¡Y eso debería hacerlo!

(PD: descubrí esto hace un momento y quería compartirlo con otros novatos. Avísame si hay una mejor manera).

Robbie Wxyz
fuente
1
Esto a menudo puede causar problemas, ya que algunos archivos relacionados con vim se escribirán como root en su directorio de inicio y más tarde encontrará errores al intentar ejecutar su propia configuración de vim como su propio usuario.
Caleb
0

Si sabe de antemano que necesita editar un archivo como root, use los comandos sudoedit <file>o sudo -e <file>lo configurará en un entorno especial para hacerlo con sus preferencias habituales de editor. Se realiza una copia del archivo y se inicia su editor para editarlo (como su usuario). Cuando salga, el archivo se copia de nuevo a su ubicación original como raíz.

Esa es la forma más segura y recomendada, pero en el caso de que a) no se dé cuenta de antemano que necesitará escribir como root o b) quiera editar y guardar cambios incrementales en el lugar, necesitará algo más. Para este fin, la solución sudo tee propuesta por smpl definitivamente está en el camino correcto, pero hay algunas mejoras menores que se pueden hacer para manejar casos extremos . Cabe destacar la diferencia en el manejo de la solicitud de contraseña de sudo en una interfaz gráfica de usuario frente a las interfaces de consola.

Una forma más fácil de configurar esto es usar el complemento vim-eunuch . Tiene este problema en particular y algunas otras cosas útiles acumuladas en un paquete práctico. El uso es tan simple como llamar :SudoWrite. Incluso uso un mapeo de acceso ligeramente más útil:

cmap w!! call SudoWrite()

Eso debería darle la capacidad de escribir cualquier archivo como root usando :w!!.

Caleb
fuente
-1

Otra opción es ejecutar sudo -E vim somefile.confpara editar, lo que preservará su entorno, por lo tanto .vimrc, se usarán sus complementos.

RSabet
fuente
¡Hola, buen truco! Eso es muy útil para Vi y muchos otros comandos.
Robbie Wxyz
3
Esto tiene los mismos efectos secundarios que vincula su configuración al directorio de inicio de la raíz: es decir, que cualquier operación o complemento de vim que escriba datos de estado lo hará en su directorio de inicio. Estos archivos terminan siendo propiedad de root y causarán errores más adelante ya que su usuario normal no podrá continuar usándolos.
Caleb