我试图找出为什么在编辑 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
在编辑 crotab 时使用,则不会发生任何变化
如何在使用 编辑 crontab 时启用突出显示crontab -e
?
答案1
vim 不知道你的文件 saving_crontab 是一个 crontab。因此,您不会获得 crontab 的特殊语法突出显示。将文件类型设置为 crontab 对我有用。我用了:
:set ft=crontab
您可以使用以下命令查看文件类型的值:
:set ft?
答案2
您是否导出了这些变量 ( export EDITOR VISUAL
)?
答案3
接受的答案恕我直言,解释得很差,所以这里有更多东西可以帮助人们解决这个问题。
我仍然不明白为什么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
还是不在乎。所以,正如正确指出的那样德斯纳伊德尔,解决方案是通过环境变量明确告诉crontab
它$EDITOR
是什么。
可以export
通过.bashrc
or来实现.profile
,但考虑到这crontab
是唯一需要忽略的别名/etc/alternatives/
,我更愿意为他创建一个别名,以使他感到需要自定义别名才能工作的耻辱(就像 for 一样dmesg -T
)。
alias crontab='EDITOR=vim crontab'
就是这样,已修复✔:)
答案4
这对我有用:
EDITOR="/usr/bin/vim"
export EDITOR
添加此选项~/.bash_profile
可为当前用户启用此功能。
添加此选项/etc/profile/any_file_you_like
可为所有用户启用此功能。