Você exportou essas variáveis ( export EDITOR VISUAL
)?
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
?
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?
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.
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 ✔:)
Tags vim cron highlighting