Змініть редактор за замовчуванням, коли sudo visudo


23

При цьому sudo visudoредактором за замовчуванням є nano.
Я хочу змінити його на viабо vim.

Я вже зробив vimредактор за замовчуванням і використовую його як заміну для geditвідкриття файлів php, .txt, .c та .h, розміщенням vim.desktopфайлу ~/.local/share/applications/та правильним редагуванням ~/.local/share/applications/mimeapps.listабо /etc/gnome/defaults.list. Однак, очевидно, це не стосується nano.

Якась підказка?


Ви перевірили man visudo?
fkraiem

З моменту написання я дізнався ще кілька речей - сподіваюся додати більше пізніше; Дистрибуції Linux обробляють це по-різному.
Волкер Зігель

Так, і я встановив свій env-var VISUAL на vim та "експортований" у .bashrc та в .bash_profile, а потім отримав оболонку, але безрезультатно. Навіть вийшов із системи та повторно зареєструвався в сесії, щоб переконатися.
Cbhihe

2
Я додав sudo -E visudoпізніше у відповідь, ти це спробував? -E змушує sudoне видаляти всі середовища. Це відбувається тому, що ubuntu має рядок Defaults env_resetу/etc/sudoers
Volker Siegel

Також ви пробували update-alternativesдоданий я також?
Volker Siegel

Відповіді:


19

Проблема не в тому, що вона не стосується nano, це те, що вона не стосується оболонки:

Просто встановіть VISUALзмінну середовища:

export VISUAL=vim

Додайте це також ~ / .bashrc, щоб зробити його постійним.

Оскільки ви, здається, використовуєте vim взагалі, встановіть VISUALі EDITOR:

export VISUAL="vim"
export EDITOR="$VISUAL"

або більше POSIX-правильно

VISUAL="vim" ; export VISUAL
EDITOR="$VISUAL" ; export EDITOR

Я припускаю, що nanoбуло значення однієї або обох змінних.

Щоб реально використовувати редактор у візуальному стилі, нам потрібно обробити, що sudoнормально не підтримує змінні середовища. Параметр це -Eзмінює.

sudo -E visudo

Без -Eтут, ви б в кінцевому підсумку з дефолту nanoзнову


Дві змінні, де використовувались задовго до того, як файли назвали *.desktopабо mime*навіть існували.
(І вражаюча річ: вони насправді використовувалися як загальний стандарт.)
В Ubuntu, схоже, встановлено системний дефолт sudo update-alternatives --config editor. Він показує меню для зміни поточної асоціації.


Дивіться розділ ENVIRONMENTу man visudo:

  VISUAL           Invoked by visudo as the editor to use

  EDITOR           Used by visudo if VISUAL is not set

1
Ви пробували? За замовчуванням sudoзнімає більшість змінних середовища з середовища для команди, яку вона виконує. VISUAL=vim sudo visudo(і запропоновані вами варіанти) не працює для мене і не слід очікувати, що він працює. sudo VISUAL=vim visudoале працює, хоча. (Я просто спробував і те, і інше, щоб бути впевненим.) До речі, VISUALі EDITORвстановлені за замовчуванням, не встановлені на nano. VISUALі EDITORне є механізмом, за допомогою якого visudoвибирається nanoв конфігурації за замовчуванням (за винятком тих випадків, коли вони звертаються до них, виявляє, що вони не встановлені або порожні, і рухається далі).
Елія Каган

3
Це працює з sudo -E visudo- що, безумовно, повинно бути у відповіді, правильно.
Volker Siegel

+1, і я приймаю відмінну відповідь, Волкер. "Бестен Данк!" Я все ще отримав повідомлення про помилку із прапорцем -E про те, що мені не дозволяється передавати змінні середовища, але потім я подав позов від користувача з обмеженим доступом до одного з адміністратором-привілеєм та бінго! Все працює добре.
Cbhihe

О, я радий додати ще одну річ, яка може піти не так / може допомогти;) Чи можете ви перевірити параметри (рядки з Default) у вашому / etc / sudoers? Я думаю, є варіант, який забороняє це, але його не було в моєму файлі за замовчуванням.
Volker Siegel

@VolkerSiegel: Я думаю, що ви посилаєтесь на стандарт env_reset у / etc / sudoers . В моєму випадку воно встановлено саме так.
Cbhihe

8

Як описано у цій відповіді , додайте

Defaults editor=/path/to/editor

до файлу судорів .

Примітка. Це буде працювати лише в тому випадку, якщо редагуваний файл містить Defaults editor=/path/to/editorрядок або містить файл, який його містить.

Наприклад: visudo -f /etc/sudoers.d/my_sudoers_extensionза замовчуванням буде Nano.


2
+1: Добре, і я цього не помічав, коли вперше розпочав цю тему, дякую.
Cbhihe

3

Якщо ви ніколи не плануєте використовувати нано, його також можна просто видалити. Тоді система буде використовувати vi / vim за замовчуванням.

sudo apt-get purge nano

Я знаю, що це не офіційна відповідь, але це одна з перших команд для мене після встановлення Ubuntu.


Це безумовно кваліфікується як "некропостинг", але ей ... Відповідь є цікавою, оскільки це стосується Ubuntu. У деяких інших дистрибутивах (серед них ArchLinux) встановлені лише редактори, які ви встановили на 1-му місці, тому у вас немає ні pbm, з яким я стикався з Ubuntu, ні необхідності вдаватися до запропонованого вами міри. У випадку, що знаходиться під рукою (ubuntu + nano + vim), я вважаю, що у багатьох може виникнути потреба у варіантах щодо редакторів. Це правда, рідко можна побачити сподобання emacsта vimактивно співіснувати у профілі будь-якого користувача. Однак nanoі vimв природі трапляються разом ... Тримайте nano!
Cbhihe

напевно найкраща відповідь
боткоп

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