web-dev-qa-db-fra.com

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

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

J'ai déjà défini 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 vim par tous les moyens. Comment puis-je faire cela ?

21
Cbhihe

Vous définissez les variables pour votre propre utilisateur, mais exécutez la commande systemctl 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 Sudo avec -E pour qu'il exporte l'environnement actuel:

    Sudo -E systemctl edit _unit_
    
  2. Ajoutez la variable (vous avez seulement besoin de SYSTEMD_EDITOR pour cela) au root de ~/.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. Alors c'est /bin/vi et non vim.

14
terdon

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

export SYSTEMD_EDITOR=vim

Et alors Sudo visudo et 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 editor souhaité, par exemple vim.gtk3:

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

Choisissez ensuite votre 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 le EDITOR lors de l'exécution:

Sudo EDITOR=vim systemctl edit <foo>

Les priorités sont première méthode> troisième méthode> deuxième méthode .

N'essayez pas de définir l'éditeur "GUI" tel que gedit parce que Pourquoi gksu/gksudo ou le lancement d'une application graphique avec Sudo ne fonctionne-t-il pas avec Wayland? et Gedit utilise 100% du CPU lors de l'édition des fichiers

25
林果皞

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é.

0
Daniel Baker

J'utilise un alias Shell:

sc='Sudo SYSTEMD_EDITOR=/bin/vi /usr/bin/systemctl'

Alors juste:

sc edit service-name

Il est également utile pour éviter généralement de taper 7 des 9 caractères de systemctl dans des cas comme restart, etc.

0
Tom Hale