Как указать редактор для открытия файла crontab? «Экспорт EDITOR = vi» не работает


103

Я использую Red Hat Enterprise Linux 5 и хочу настроить редактор vim для редактирования файла crontab.

Если я бегу echo $EDITOR, то получаю vim. Но когда я бегу crontab -e, у меня другой редактор.

Ответы:


170

Очень вероятно, что в вашей VISUALпеременной среды установлено другое значение. Пытаться:

export VISUAL=vi

6
установка переменной export VISUAL=vim( setenv VISUAL "vim"для оболочки tcsh) работает ОТЛИЧНО !!
antonjs

9
@ lwpro2: Если VISUALне задано, используется EDITORпеременная. Но VISUALимеет приоритет над EDITOR.
bmk

Если crontab управляется несколькими людьми с одним пользователем, я рекомендую сделать это в подоболочке, чтобы редактор по умолчанию оставался на месте.
Thomas Böhm

Есть идеи, почему файл отличается при открытии в vi вместо nano?
dardub 07

76

Процитирую этого человека:

Параметр -e используется для редактирования текущего crontab с помощью редактора, указанного в переменных среды VISUAL или EDITOR.

Чаще всего, если вы запускаете crontab -eX, вы VISUALустановили; вот что используется. Попробуй это:

VISUAL=vi crontab -e

У меня это сработало :)


Спасибо за объяснение, действительно, я запускаю свой терминал с X.
antonjs

1
Лучший вариант, если вы используете crontab -e с sudo :)sudo VISUAL=vi crontab -e
MediaVince 08

42

Если вышеперечисленные методы не работают (поскольку они не работали в моей установке Ubuntu 13.04), попробуйте:

Есть несколько альтернативных способов:

1) Запускаем select-editor

select-editor

2) Отредактируйте файл вручную: ~/.selected_editorуказав предпочитаемый редактор. С помощью этой опции вы можете указать параметры редактора.

# Generated by /usr/bin/select-editor
SELECTED_EDITOR="/usr/bin/emacs -nw"

3) Вы можете указать "на лету" в командной строке с помощью:

env VISUAL="emacs -nw" crontab -e

1
Я по ошибке установил редактор по умолчанию nanoпри первом открытии crontab. Потом пришлось использовать, sudo select-editorчтобы заставить его работать. Совет, если только select-editorне сработает
244an

2
Вы не должны использовать sudo для вашей личной конфигурации. Это может сломать вещи, вынудив вас продолжать работать на повышенных уровнях при обычном использовании компьютера. Sudo (повышенная команда) предназначена для работы с общесистемными функциями за пределами вашей личной области (~ область пользователя).
LD James

5

Я думаю, вам может понадобиться использовать полный путь:

export EDITOR=/usr/bin/vim

3
Ловушка в том, что VISUALпроверяется в первую очередь. Так что совершенно здравый совет, подобный вашему, хорошо работает для сеанса SSH и загадочно не работает на настольном компьютере.
9000,

Я попытался выполнить экспорт при назначении, как описано, но это не сработало. Сначала назначив, а затем экспортировав, это сработало для меня, например: EDITOR = / usr / bin / vi; РЕДАКТОР экспорта. Здесь используется SunOS под SSH.
Алан

5

Вы можете использовать команду ниже, чтобы открыть его в редакторе VIM.

export VISUAL=vim; crontab -e

Примечание. Убедитесь, что на вашем сервере установлен редактор VIM.



2

У меня это не сработало. Я запускаю crontab с помощью sudo, поэтому я переключился на root, выполнил указанные выше предложения, и crontab открылся в vim, но все равно не из моей учетной записи. Наконец я сбежал sudo select-editorиз учетной записи пользователя, и это помогло.


1
Если вам нужно запустить sudo для настройки пользовательской среды, это означает проблемы, которые вам следует решить. Вы запустили sudo в своем личном пространстве и потеряли права доступа к файлам, которые должны принадлежать вам. Вы можете проверить свое пространство, запустив: find ~/ -mount ! -user $(whoami). Вы можете исправить эту проблему, запустив: sudo chown -R $(whoami):$(whoami) ~/.
LD James

@LDJames Вы были правы, спасибо. Как оказалось, это был просто файл .select_editor, владельцем которого был root.
felwithe

2

Это сработало для меня:

EDITOR="/usr/bin/vim"
export EDITOR

Добавьте это в ~ / .bash_profile или ~ / .bashrc, чтобы включить это для текущего пользователя.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.