Cambie el editor predeterminado a vim para _ sudo systemctl edit [unit-file] _

17

[4.13.12-1-ARCH con gnome3 y gdm en Xorg]

Ya he configurado mis entornos VISUAL y EDITOR vim. Del mismo modo, intenté SYSTEMD_EDITOR="vim"; export SYSTEMD_EDITOR en mi ~ / .bashrc, pero fue en vano.

Al modificar archivos de unidad en Arch (systemd) a través de

 $ sudo systemctl edit _unit_ 

Me encuentro mirando nano. La vida es demasiado corta y quiero vimpor todos los medios. Cómo hago esto ?

Cbhihe
fuente

Respuestas:

13

Está configurando las variables para su propio usuario, pero está ejecutando el systemctlcomando como root ( sudo). Por lo tanto, las variables que ha establecido para su usuario son irrelevantes.

Para arreglar esto, puedes (pero ve con 1):

  1. Ejecutar sudocon -Elo que exporta el entorno actual:

    sudo -E systemctl edit _unit_
    
  2. Agregue la variable (solo necesita SYSTEMD_EDITOResto) a la raíz ~/.profile:

    export SYSTEMD_EDITOR="/bin/vi" 
    

    Luego corre con

    sudo -i systemctl edit _unit_ 
    

Finalmente, tenga en cuenta que debe especificar la ruta completa a su editor, no solo su nombre. Entonces es /bin/viy no vim.

terdon
fuente
Ya estaba trabajando sudo -E ...después de haber modificado /root/.bashrc. sudo -i ...Sin embargo, no había pensado en ejecutar sudo como shell de inicio de sesión ( ). Ninguno de los dos es muy satisfactorio, ya que necesita recordar las banderas correspondientes, pero bueno ... supongo que hay cosas peores ... Aún así (tal vez sea de interés), confirmo que para algunos de nosotros: SYSTEMD_EDITOR=/usr/bin/vim; export SYSTEMD_EDITOR(como root) es Correcto. La ruta depende de cómo viminstaló su paquete en primer lugar. Además, como definí PATH para root, vimes suficiente. No hay una sola forma de hacerlo. Gracias @terdon.
Cbhihe
1
@ cbhihe ah, está bien. Lo intenté con just vimy se quejó, por eso lo mencioné. Y oye, soy un usuario de emacs :)
terdon
1
@Cbhihe créeme que no fue una elección fácil. ¡Incluso lo probé usando vim! Me llevó tres días cerrar la cosa.
terdon
22

Primer método, puede agregar esta línea a ~/.bashrc:

export SYSTEMD_EDITOR=vim

Y luego sudo visudoy agregue esta línea:

Defaults  env_keep += "SYSTEMD_EDITOR"

Inicie una nueva sesión de bash para que surta efecto, luego ejecútelo sudo systemctl edit <foo>como de costumbre.

El segundo método es el uso update-alternatives:

Instale su deseado editor, por ejemplo vim.gtk3:

$ cual editor
editor es / usr / bin / editor
$ sudo update-alternative --install "$ (que editor)" editor "$ (que vim.gtk3)" 15

Luego elija su deseado editor:

$ sudo update-alternatives --config editor
There are 7 choices for the alternative editor (providing /usr/bin/editor).

  Selection    Path                Priority   Status
------------------------------------------------------------
  0            /usr/bin/vim.gtk3    50        auto mode
  1            /bin/ed             -100       manual mode
* 2            /bin/nano            40        manual mode
  3            /usr/bin/code        0         manual mode
  4            /usr/bin/gedit       5         manual mode
  5            /usr/bin/vim.basic   30        manual mode
  6            /usr/bin/vim.gtk3    50        manual mode
  7            /usr/bin/vim.tiny    15        manual mode

Press <enter> to keep the current choice[*], or type selection number: 6
update-alternatives: using /usr/bin/vim.gtk3 to provide /usr/bin/editor (editor) in manual mode

El tercer método es establecer directamente el EDITORtiempo de ejecución:

sudo EDITOR=vim systemctl edit <foo>

La precedencia es primer método> tercer método> segundo método .

No intente configurar el editor "GUI" como geditporque ¿Por qué no gksu / gksudo o iniciar una aplicación gráfica con sudo funciona con Wayland? y Gedit usa el 100% de la CPU mientras edita archivos

林果 皞
fuente
1
Gracias 林果 皞, pero realmente quise decir que vimno gedit.
Cbhihe
@Cbhihe gedites solo un ejemplo para demostrar que incluso el editor de GUI está funcionando, por supuesto, puede usarlo vimcon esta respuesta.
林果 皞
1
林 さ ん, tienes razón. De hecho, implementé su solución editando el archivo sudoers con sudo visudo... Fui demasiado rápido para aceptar la primera respuesta. Lo que estaba buscando es exactamente la modificación del /etc/suddoersarchivo tal como lo propuso. Gracias y perdón por no elegir su solución. Culpa mía.
Cbhihe
[ACTUALIZACIÓN] Edité mi respuesta para agregar consejos, no establecer gedit.
林果 皞
0

Tengo cero paciencia con Nano y prefiero matar un mosquito con un cañón.

Elimino Nano y coloco un enlace simbólico para vim en su lugar.

Hecho.

Daniel Baker
fuente