Nenhum destaque de sintaxe ao editar o crontab

1

Estou tentando descobrir por que não tenho destaque de sintaxe ao editar meu crontab.

Eu tenho os dois $EDITOR e $VISUAL definidos para /usr/bin/vim :

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

Se eu salvar o crontab em um arquivo e editá-lo com realce de sintaxe vim, o recurso está ativado.

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

E se eu usar :syntax on enquanto edito a crotab, nada muda

Como posso ativar o realce ao editar o crontab com crontab -e ?

    
por ben 21.03.2013 / 20:06

4 respostas

0

Você exportou essas variáveis ( export EDITOR VISUAL )?

    
por 21.03.2013 / 23:16
4

O vim não sabe que o seu arquivo saved_crontab é um crontab. Portanto, você não recebe um destaque de sintaxe especial para crontabs. Definir o tipo de arquivo para crontab funcionou para mim. Eu usei:

:set ft=crontab

Você pode ver o valor do tipo de arquivo com:

:set ft?
    
por 05.04.2013 / 15:31
2

Isso funcionou para mim:

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

Adicione isso a ~/.bash_profile para habilitar isso para o usuário atual.
Adicione isso a /etc/profile/any_file_you_like para habilitar isso para todos os usuários.

    
por 27.03.2016 / 20:27
0

A resposta aceita é muito mal explicada IMHO, então aqui está algo mais para ajudar as pessoas a resolver este problema.

Ainda não consigo entender por que crontab se recusa a escolher o editor especificado com

sudo update-alternatives --config editor

no meu caso:

There are 4 choices for the alternative editor (providing /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

E, de fato, tudo aponta corretamente para o 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

Mas crontab ainda não se importa. Então, como corretamente apontado por dsznajder , a solução é informar explicitamente a crontab o que é o $EDITOR , via variável de ambiente.

Pode-se export via .bashrc ou .profile , mas dado que crontab é o único a ignorar /etc/alternatives/ , eu preferi criar um apelido só para ele fazer ele sentir a vergonha de requerendo um alias personalizado para funcionar (assim como para dmesg -T ).

alias crontab='EDITOR=vim crontab'

É isso aí, fixo ✔:)

    
por 07.08.2017 / 12:34