Нет подсветки синтаксиса при редактировании crontab

Я пытаюсь понять, почему у меня нет подсветки синтаксиса при редактировании моего crontab.

У меня есть как $EDITOR и $VISUAL для /usr/bin/vim :

 > echo $EDITOR /usr/bin/vim > echo $VISUAL /usr/bin/vim 

Если я сохраню crontab в файле и отредактирую его с помощью подсветки синтаксиса vim.

 > crontab -l > saved_cronab > /usr/bin/vim saved_crontab 

И если я использую :syntax on при редактировании крота ничего не меняется

Как включить подсветку при редактировании crontab с помощью crontab -e ?

Вы экспортировали эти переменные ( export EDITOR VISUAL )?

vim не знает, что ваш файл saved_crontab является crontab. Таким образом, вы не получите специальный синтаксис для crontab. Установка типа файла в crontab работала для меня. Я использовал:

 :set ft=crontab 

Вы можете увидеть значение filetype с помощью:

 :set ft? 

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

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

Добавьте это в ~/.bash_profile чтобы включить это для текущего пользователя.
Добавьте это в /etc/profile/any_file_you_like чтобы включить это для всех пользователей.

Принятый ответ довольно слабо объяснен ИМХО, так что еще кое-что, чтобы помочь людям решить эту проблему.

Я все еще не понимаю, почему crontab отказывается выбирать редактор, указанный с помощью

 sudo update-alternatives --config editor 

в моем случае:

Для альтернативного редактора есть 4 варианта (предоставление / usr / bin / editor).

  Selection Path Priority Status ------------------------------------------------------------ 0 /bin/nano 40 auto mode 1 /bin/ed -100 manual mode 2 /bin/nano 40 manual mode * 3 /usr/bin/vim.basic 30 manual mode 4 /usr/bin/vim.tiny 10 manual mode 

А ведь все правильно указывает на vim.basic:

 #> ll /usr/bin/editor lrwxrwxrwx 1 root root 24 Oct 20 2014 /usr/bin/editor -> /etc/alternatives/editor #> ll /etc/alternatives/editor lrwxrwxrwx 1 root root 18 Jun 20 2016 /etc/alternatives/editor -> /usr/bin/vim.basic #> ll /usr/bin/vim.basic -rwxr-xr-x 1 root root 2.4M Nov 24 2016 /usr/bin/vim.basic #> ll /usr/bin/vim lrwxrwxrwx 1 root root 21 Oct 20 2014 /usr/bin/vim -> /etc/alternatives/vim 

Но crontab все равно не волнует. Итак, как правильно указано dsznajder , решение состоит в том, чтобы явно указать crontab что такое $EDITOR , через переменную среды.

Можно export его через .bashrc или .profile , но, учитывая, что crontab является единственным, кто игнорирует /etc/alternatives/ , я предпочел создать псевдоним только для него, чтобы заставить его почувствовать стыд за то, что пользовательский псевдоним работает ( как и для dmesg -T ).

 alias crontab='EDITOR=vim crontab' 

Вот и все, исправлено ✔ 🙂