编辑 crontab 时没有语法高亮

ben*_*ben 3 vim cron highlighting

我想弄清楚为什么我在编辑我的 crontab 时没有语法高亮。

我有两个$EDITOR$VISUAL设置为/usr/bin/vim

> echo $EDITOR
/usr/bin/vim
> echo $VISUAL
/usr/bin/vim
Run Code Online (Sandbox Code Playgroud)

如果我将 crontab 保存到文件并使用 vim 语法突出显示进行编辑,则启用。

> crontab -l > saved_cronab
> /usr/bin/vim saved_crontab
Run Code Online (Sandbox Code Playgroud)

如果我:syntax on在编辑 crotab 时使用,则没有任何变化

使用 编辑 crontab 时如何启用突出显示crontab -e

Ron*_*Tom 7

vim 不知道,您的文件 saved_crontab 是一个 crontab。因此,您不会获得 crontab 的特殊语法突出显示。将文件类型设置为 crontab 对我有用。我用了:

:set ft=crontab
Run Code Online (Sandbox Code Playgroud)

您可以使用以下命令查看文件类型的值:

:set ft?
Run Code Online (Sandbox Code Playgroud)


小智 5

您是否导出了这些变量 ( export EDITOR VISUAL)?

  • 这并没有提供问题的答案。要批评或要求作者澄清,请在他们的帖子下方发表评论 - 您可以随时对自己的帖子发表评论,一旦您拥有足够的 [声誉](http://serverfault.com/faq#reputation),您将能够[对任何帖子发表评论](http://serverfault.com/privileges/comment)。 (3认同)
  • @mdpc 实际上它确实回答了这个问题,我敢打赌这也是正确的答案。 (3认同)

Avi*_*vio 5

恕我直言,接受的答案解释得很差,所以这里有更多东西可以帮助人们解决这个问题。

\n

我仍然不明白为什么crontab拒绝选择指定的编辑器

\n
sudo update-alternatives --config editor\n
Run Code Online (Sandbox Code Playgroud)\n

就我而言:

\n
\n

替代编辑器有 4 个选择(提供 /usr/bin/editor)。

\n
  Selection    Path                Priority   Status\n------------------------------------------------------------\n  0            /bin/nano            40        auto mode\n  1            /bin/ed             -100       manual mode\n  2            /bin/nano            40        manual mode\n* 3            /usr/bin/vim.basic   30        manual mode\n  4            /usr/bin/vim.tiny    10        manual mode\n
Run Code Online (Sandbox Code Playgroud)\n
\n

事实上,一切都正确地指向 vim.basic:

\n
\n
#> ll /usr/bin/editor\nlrwxrwxrwx 1 root root 24 Oct 20  2014 /usr/bin/editor -> /etc/alternatives/editor\n\n#> ll /etc/alternatives/editor\nlrwxrwxrwx 1 root root 18 Jun 20  2016 /etc/alternatives/editor -> /usr/bin/vim.basic\n\n#> ll /usr/bin/vim.basic\n-rwxr-xr-x 1 root root 2.4M Nov 24  2016 /usr/bin/vim.basic\n\n#> ll /usr/bin/vim\nlrwxrwxrwx 1 root root 21 Oct 20  2014 /usr/bin/vim -> /etc/alternatives/vim\n
Run Code Online (Sandbox Code Playgroud)\n
\n

crontab还是不在乎。因此,正如dsznajder正确指出的那样,解决方案是通过环境变量明确告诉crontab$EDITOR是什么。

\n

可以export通过.bashrcor来实现.profile,但考虑到这crontab是唯一需要忽略的/etc/alternatives/别名,我更愿意为他创建一个别名,以使他感到需要自定义别名才能工作的耻辱(就像 for 一样dmesg -T)。

\n
alias crontab=\'EDITOR=vim crontab\'\n
Run Code Online (Sandbox Code Playgroud)\n

就这样,修复了 \xe2\x9c\x94 :)

\n