Измените редактор по умолчанию на vim для _ sudo systemctl edit [unit-file] _

17

[4.13.12-1-ARCH с gnome3 и gdm на Xorg]

Я уже установил свои VISUAL и EDITOR env-vars в vim. Точно так же я попытался SYSTEMD_EDITOR="vim"; export SYSTEMD_EDITOR в моем ~ / .bashrc, но безрезультатно.

При изменении файлов модулей в Arch (systemd) через

 $ sudo systemctl edit _unit_ 

Я смотрю на себя nano. Жизнь слишком коротка, и я хочу во что vimбы то ни стало. Как мне это сделать ?

Cbhihe
источник

Ответы:

13

Вы устанавливаете переменные для своего собственного пользователя, но запускаете systemctlкоманду как root ( sudo). Поэтому переменные, которые вы установили для своего пользователя, не имеют значения.

Чтобы это исправить, вы можете либо (но идти с 1):

  1. Запустите sudoс -Eтем, чтобы он экспортировал текущую среду:

    sudo -E systemctl edit _unit_
    
  2. Добавьте переменную (вам нужно только SYSTEMD_EDITORэто) к корням ~/.profile:

    export SYSTEMD_EDITOR="/bin/vi" 
    

    Тогда беги с

    sudo -i systemctl edit _unit_ 
    

Наконец, обратите внимание, что вам нужно указать полный путь к вашему редактору, а не только его имя. Так оно /bin/viи есть vim.

Тердон
источник
Я уже работал с sudo -E ...после изменения /root/.bashrc. Однако я не думал о запуске sudo в качестве оболочки входа в систему ( sudo -i ...). Ни один из них не очень удовлетворителен, так как вам нужно помнить соответствующие флаги, но, эй ... есть худшие вещи, я думаю ... Тем не менее (возможно, это представляет интерес), я подтверждаю, что для некоторых из нас: SYSTEMD_EDITOR=/usr/bin/vim; export SYSTEMD_EDITOR(как root) право. Путь все зависит от того, как вы vimустановили свой pkg в 1-е место. Плюс, как я определил PATH для root, vimдостаточно. Существует не один способ сделать это. Спасибо @terdon.
Cbhihe
1
@cbhihe ах, хорошо. Я попробовал только что, vimи он пожаловался, поэтому я упомянул об этом. И, эй, я пользователь emacs :)
terdon
1
@Cbhihe, поверь мне, это был нелегкий выбор. Я даже проверил это с помощью vim! Мне потребовалось три дня, чтобы закрыть это дело.
Terdon
22

Первый способ, вы можете добавить эту строку в ~/.bashrc:

export SYSTEMD_EDITOR=vim

А затем sudo visudoи добавьте эту строку:

Defaults  env_keep += "SYSTEMD_EDITOR"

Начните новый сеанс bash, чтобы он вступил в силу, затем запустите sudo systemctl edit <foo>как обычно.

Второй метод это использование update-alternatives:

Установите желаемое editor, например vim.gtk3:

$ какой редактор
редактор / usr / bin / editor
$ sudo update-альтернативы --install "$ (который редактор)" редактор "$ (который vim.gtk3)" 15

Затем выберите желаемое 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

Третий метод - это прямая установка EDITORвремени выполнения:

sudo EDITOR=vim systemctl edit <foo>

Приоритет - первый метод> третий метод> второй метод .

Не пытайтесь установить редактор "GUI", например, geditпотому что Почему gksu / gksudo или запуск графического приложения с sudo не работают с Wayland? и Gedit использует 100% процессора при редактировании файлов

林果 皞
источник
1
Спасибо, но я действительно имел в виду vim, нет gedit.
Cbhihe
@Cbhihe gedit- просто пример, доказывающий, что даже графический редактор работает, конечно, вы можете использовать vimэтот ответ.
皞 皞
1
ん さ ん, ты прав. На самом деле я реализовал ваше решение, отредактировав файл sudoers с помощью sudo visudo... Я слишком быстро принял первый ответ. То, что я искал, это именно то изменение /etc/suddoersфайла, которое вы предложили. Спасибо и извините за то, что вы не выбрали свое решение. Виноват.
Cbhihe
[ОБНОВЛЕНИЕ] Я отредактировал свой ответ, чтобы добавить совет не установить gedit.
皞 皞
0

Я терпеливо отношусь к Нано и предпочитаю убивать комара из пушки.

Я удаляю Nano и помещаю символическую ссылку на vim.

Выполнено.

Дэниел Бейкер
источник