Remplacez l'éditeur par défaut par vim pour _ sudo systemctl edit [fichier-unité] _

17

[4.13.12-1-ARCH avec gnome3 et gdm sur Xorg]

J'ai déjà réglé mes env-vars VISUAL et EDITOR sur vim. De même, j'ai essayé SYSTEMD_EDITOR="vim"; export SYSTEMD_EDITOR dans mon ~ / .bashrc, en vain.

Lors de la modification des fichiers d'unité dans Arch (systemd) via

 $ sudo systemctl edit _unit_ 

Je me retrouve à regarder nano. La vie est trop courte et je veux vimpar tous les moyens. Comment puis-je faire cela ?

Cbhihe
la source

Réponses:

13

Vous définissez les variables pour votre propre utilisateur, mais exécutez la systemctlcommande en tant que root ( sudo). Par conséquent, les variables que vous avez définies pour votre utilisateur ne sont pas pertinentes.

Pour résoudre ce problème, vous pouvez soit (mais aller avec 1):

  1. Exécutez sudoavec -Epour qu'il exporte l'environnement actuel:

    sudo -E systemctl edit _unit_
    
  2. Ajoutez la variable (vous n'en avez besoin que SYSTEMD_EDITORpour cela) aux racines ~/.profile:

    export SYSTEMD_EDITOR="/bin/vi" 
    

    Ensuite, exécutez avec

    sudo -i systemctl edit _unit_ 
    

Enfin, notez que vous devez spécifier le chemin d'accès complet à votre éditeur, pas seulement son nom. Donc c'est /bin/viet non vim.

terdon
la source
Je travaillais déjà avec sudo -E ...après avoir modifié /root/.bashrc. sudo -i ...Cependant, je n'avais pas pensé à exécuter sudo comme shell de connexion ( ). Ni l'un ni l'autre ne sont très satisfaisants car vous devez vous souvenir des drapeaux correspondants, mais bon ... il y a des choses pires, je suppose ... Pourtant (peut-être que c'est intéressant), je confirme que pour certains d'entre nous: SYSTEMD_EDITOR=/usr/bin/vim; export SYSTEMD_EDITOR(en tant que root) est droite. Le chemin dépend de la façon dont vous avez viminstallé votre paquetage en premier lieu. De plus, comme je l'ai défini PATH pour root, cela vimsuffit. Il n'y a pas qu'une seule façon de procéder. Merci @terdon.
Cbhihe
1
@cbhihe ah, OK. J'ai essayé avec juste vimet il s'est plaint, c'est pourquoi je l'ai mentionné. Et bon, je suis un utilisateur emacs :)
terdon
1
@Cbhihe croyez-moi, ce n'était pas un choix facile. Je l'ai même testé en utilisant vim! Il m'a fallu trois jours pour fermer la chose.
terdon
22

Première méthode, vous pouvez ajouter cette ligne à ~/.bashrc:

export SYSTEMD_EDITOR=vim

Et puis sudo visudoet ajoutez cette ligne:

Defaults  env_keep += "SYSTEMD_EDITOR"

Démarrez une nouvelle session bash pour prendre effet, puis exécutez sudo systemctl edit <foo>comme d'habitude.

La deuxième méthode consiste à utiliser update-alternatives:

Installez votre choix editor, par exemple vim.gtk3:

$ quel éditeur
éditeur est / usr / bin / editor
$ sudo update-alternatives --install "$ (quel éditeur)" editor "$ (quel vim.gtk3)" 15

Choisissez ensuite votre choix 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

La troisième méthode consiste à définir directement l' EDITORexécution à l'exécution:

sudo EDITOR=vim systemctl edit <foo>

La priorité est première méthode> troisième méthode> deuxième méthode .

N'essayez pas de définir l'éditeur "GUI", par exemple geditparce que gksu / gksudo ou le lancement d'une application graphique avec sudo ne fonctionnent pas avec Wayland? et Gedit utilise 100% du CPU lors de l'édition des fichiers

林果 皞
la source
1
Merci 林果 皞, mais je voulais vraiment dire vimnon gedit.
Cbhihe
@Cbhihe geditn'est qu'un exemple pour prouver que même l'éditeur de GUI fonctionne, bien sûr, vous pouvez utiliser vimcette réponse.
林果 皞
1
林 さ ん, vous avez raison. En fait, j'ai implémenté votre solution en éditant le fichier sudoers avec sudo visudo... J'ai été trop rapide pour accepter la première réponse. Ce que je cherchais, c'est exactement la modification du /etc/suddoersfichier telle que vous l'avez proposée. Merci et désolé de ne pas avoir choisi votre solution. Ma faute.
Cbhihe
[MISE À JOUR] J'ai modifié ma réponse pour ajouter un conseil ne définissez pas gedit.
林果 皞
0

Je n'ai aucune patience avec Nano et je préfère tuer un moustique avec un canon.

Je supprime Nano et place un lien symbolique vers vim à sa place.

Terminé.

Daniel Baker
la source