Cambiar el editor predeterminado cuando sudo visudo

23

Al hacerlo sudo visudo, el editor predeterminado es nano.
Quiero cambiarlo a vio vim.

Ya hice vimel editor predeterminado, y lo uso como un sustituto para geditabrir archivos php, .txt, .c y .h, colocando un vim.desktoparchivo ~/.local/share/applications/y editando correctamente ~/.local/share/applications/mimeapps.listo /etc/gnome/defaults.list. Sin embargo, aparentemente esto no se aplica a nano.

Cualquier pista ?

Cbhihe
fuente
¿Has comprobado man visudo?
fkraiem
Descubrí algunas cosas más desde que lo escribí; espero agregar más más tarde; Las distribuciones de Linux lo manejan de manera diferente.
Volker Siegel
Sí y configuré mi env-var VISUAL en vim y "exporté" en .bashrc y en .bash_profile y luego obtuve el shell pero fue en vano. Incluso cerró la sesión y volvió a iniciar sesión en la sesión para asegurarse.
Cbhihe
2
Agregué sudo -E visudomás tarde en la respuesta, ¿lo intentaste? El -E hace que sudono se eliminen todos los entornos. Lo hace porque ubuntu tiene una línea Defaults env_reseten/etc/sudoers
Volker Siegel
Además, ¿probaste el update-alternativesque también agregué?
Volker Siegel

Respuestas:

19

El problema no es que no se aplica nano, es que no se aplica al shell:

Simplemente configure la VISUALvariable de entorno:

export VISUAL=vim

Agregue esto también ~ / .bashrc para que sea permanente.

Como parece que usa vim en general, configure ambos VISUALy EDITOR:

export VISUAL="vim"
export EDITOR="$VISUAL"

o más POSIX-correcto

VISUAL="vim" ; export VISUAL
EDITOR="$VISUAL" ; export EDITOR

Supongo que nanoera el valor de una o ambas variables.

Para hacer uso del editor en visudo en realidad, tenemos que manejar que sudonormalmente no mantiene las variables de entorno. La opción -Ecambia eso.

sudo -E visudo

Sin el -Eaquí, terminaría con un valor predeterminado de nanonuevo


Las dos variables estaban en uso mucho antes de los archivos nombrados *.desktopo mime*incluso existían.
(Y lo impresionante es que en realidad se usaron como un estándar común ).
En Ubuntu, el valor predeterminado del sistema parece estar configurado con sudo update-alternatives --config editor. Muestra un menú para cambiar la asociación actual.


Ver sección ENVIRONMENTen man visudo:

  VISUAL           Invoked by visudo as the editor to use

  EDITOR           Used by visudo if VISUAL is not set
Volker Siegel
fuente
1
¿Lo intentaste? De forma predeterminada, la sudomayoría de las variables de entorno se deshabilita del entorno para el comando que ejecuta. VISUAL=vim sudo visudo(y las variaciones que sugieres) no funcionan para mí y no se debe esperar que funcionen. sudo VISUAL=vim visudofunciona, sin embargo. (Solo he intentado ambos de nuevo, para estar seguro). Por cierto, VISUALy no EDITORestán configurados por defecto, no están configurados en nano. VISUALy EDITORno son el mecanismo a través del cual visudoselecciona nanoen la configuración predeterminada (excepto en la medida en que los consulta, encuentra que no están configurados o en blanco, y continúa).
Eliah Kagan
3
Funciona con sudo -E visudo, lo que sin duda debería estar en la respuesta, ¿verdad?
Volker Siegel
+1 y acepto tu excelente respuesta, Volker. "¡Besten Dank!" Todavía recibí un mensaje de error con el indicador -E, acerca de que no se me permitía transmitir variables de entorno, ¡pero luego pasé de un usuario de acceso restringido a uno con privilegios de administrador y bingo! Todo funciona bien
Cbhihe
Oh, estoy feliz de agregar una cosa más que puede salir mal / puede ayudar;) ¿Podría verificar las opciones (líneas con Default) en sus / etc / sudoers? Creo que hay una opción que prohíbe eso, pero no estaba en mi archivo predeterminado.
Volker Siegel
@VolkerSiegel: Me imagino que se refiere al valor predeterminado env_reset en / etc / sudoers . Está configurado así en mi caso.
Cbhihe
8

Como se describe en esta respuesta , agregue

Defaults editor=/path/to/editor

al archivo de sudoers .

Nota: esto solo funcionará si el archivo que se está editando contiene la Defaults editor=/path/to/editorlínea o incluye un archivo que la contiene.

Por ejemplo: por visudo -f /etc/sudoers.d/my_sudoers_extensiondefecto será Nano.

Muhamed Huseinbašić
fuente
2
+1: Buena, y no me había dado cuenta cuando comencé este hilo, gracias.
Cbhihe
4

Si nunca planea usar nano, también puede simplemente eliminarlo. Entonces el sistema usará vi / vim como predeterminado.

sudo apt-get purge nano

Sé que no es la respuesta oficial, pero es uno de los primeros comandos para mí después de instalar Ubuntu.

Philipp Claßen
fuente
Esto definitivamente califica como "necroposting", pero oye ... Tu respuesta es interesante, ya que trata con Ubuntu. Algunas otras distribuciones (ArchLinux entre ellas) solo tienen los editores que instaló en el primer lugar, por lo que no tiene el pbm que encontré con Ubuntu ni la necesidad de recurrir a la medida que sugiere. En el caso que nos ocupa (ubuntu + nano + vim), creo que muchos pueden necesitar opciones en términos de editores. Es cierto que rara vez se ven los gustos emacsy vimcoexisten activamente en el perfil de cualquier usuario. Sin embargo, nanoy vimsucedan juntos en la naturaleza ... nano¡ Sigan !
Cbhihe
1
Definitivamente la mejor respuesta
botkop
1
emacsy vimconviven felizmente y se usan constantemente. nanoes como la plaga, cuanto antes se elimine del sistema, mejor. Entiendo que algunas personas pueden encontrarlo cómodo, pero esta respuesta es perfectamente válida.
Mementum