Змініть редактор за замовчуванням на vim для _ sudo systemctl edit [unit-file] _


18

[4.13.12-1-ARCH з gnome3 та gdm на Xorg]

Я вже налаштував свої візуальні та редакторські програми vim. Так само я намагався SYSTEMD_EDITOR="vim"; export SYSTEMD_EDITOR в моєму ~ / .bashrc, безрезультатно.

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

 $ sudo systemctl edit _unit_ 

Мені здається, що я дивлюся на це nano. Життя занадто коротке, і я хочу vimвсіма силами. Як це зробити?

Відповіді:


13

Ви встановлюєте змінні для власного користувача, але виконуєте systemctlкоманду як root ( sudo). Тому змінні, які ви встановили для свого користувача, не мають значення.

Щоб виправити це, ви можете (але перейти з 1):

  1. Запуск sudoз -Eтак експортує поточну середу:

    sudo -E systemctl edit _unit_
    
  2. Додайте змінну ( SYSTEMD_EDITORдля цього потрібно лише ) до root ~/.profile:

    export SYSTEMD_EDITOR="/bin/vi" 
    

    Потім бігайте з

    sudo -i systemctl edit _unit_ 
    

Нарешті, зауважте, що вам потрібно вказати повний шлях до свого редактора, а не лише його ім'я. Так це /bin/viі немає vim.


Я вже працював з ним sudo -E ...після зміни /root/.bashrc. sudo -i ...Однак не думав запускати судо як оболонку входу ( ). Жоден із них не є дуже задовільним, тому що вам потрібно запам’ятати відповідні прапори, але ей ... є гірші речі, я думаю ... Але все-таки (можливо, це цікавить), я підтверджую, що для деяких із нас: SYSTEMD_EDITOR=/usr/bin/vim; export SYSTEMD_EDITOR(як root) правильно. Шлях все залежить від того, як ви vimвстановили р-р кг на 1-му місці. Плюс, як я визначив PATH для root, vimдостатньо. Існує не один спосіб зробити це. Дякую @terdon
Cbhihe

1
@cbhihe ах, гаразд. Я спробував із справедливим, vimі він скаржився, саме тому я це згадав. І ей, я користувач emacs :)
terdon

1
@Cbhihe повірте, це був непростий вибір. Я навіть тестував це за допомогою vim! Щоб закрити річ, мені знадобилося три дні.
terdon

23

Перший спосіб, ви можете додати цей рядок до ~/.bashrc:

export SYSTEMD_EDITOR=vim

А потім sudo visudoі додайте цей рядок:

Defaults  env_keep += "SYSTEMD_EDITOR"

Почніть новий баш-сеанс, щоб набути чинності, а потім запустіть sudo systemctl edit <foo>як завжди.

Другий метод - це використання update-alternatives:

Встановіть бажане editor, наприклад vim.gtk3:

$ який редактор
редактор - / usr / bin / editor
$ sudo update-alternative - встановіть "$ (який редактор)" редактор "$ (який 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- лише приклад, який підтвердив, що навіть редактор gui працює, звичайно, ви можете використовувати vimцю відповідь.
林果 皞

1
林 さ ん, ти маєш рацію. Насправді я реалізував yr рішення, редагуючи файл sudoers за допомогою sudo visudo... Я був надто швидким у прийнятті першої відповіді. Що я шукав - це саме модифікація /etc/suddoersфайлу, як ви його запропонували. Дякую і вибачте за те, що не обрали рішення Yr. Моє ліжко.
Cbhihe

[UPDATE] Я відредагував свою відповідь, щоб додати поради не встановлювати gedit.
林果 皞

0

Я маю нульове терпіння з Нано і вважаю за краще вбивати комара з гармати.

Я видаляю Nano і розміщую на цьому місці символьне посилання, щоб vim.

Зроблено.


0

Я використовую псевдонім оболонки:

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

Тоді просто:

sc edit service-name

Це також корисно, як правило, уникати набору 7 із 9 символів systemctlу таких випадках, як restartтощо.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.