如何将 Sublime 设置为 crontab 的默认文本编辑器?

如何将 Sublime 设置为 crontab 的默认文本编辑器?

如何将 Sublime 设置为 crontab 的默认文本编辑器?

我定期编写 cron 作业,因此我希望能够使用 sublime 而不是 Nano 来编辑 crontab -e。

我已经开始为 Sublime 创建一个 .desktop 文件。

我也尝试过从终端使用选择编辑器,但它没有显示 Sublime 作为选项。

Ubuntu 15.10

答案1

这可能是由于缺少-w/--wait标志,导致命令 ( subl) 仅退出您关闭了文件(本例中为临时 cron 文件)。如果没有它,“cron”会认为您在命令退出时立即完成编辑,并且任何更改都只会保留在临时文件中,没有任何意义。

因此,一个解决方案是:

创建一个新文件sublime-wait

#!/bin/sh
subl -w $*

添加到您的~/.bashrc~/.profile

export EDITOR='/path/to/sublime-wait'

答案2

editor选牌顺序cron如下,第一个选牌者获胜:

  • VISUAL环境变量
  • EDITOR环境变量
  • /usr/bin/editor

因此将其设置VISUAL为 sublime 的路径,例如:

export VISUAL=/usr/bin/subl

将其添加到您的~/.bashrc永久任务中。


只需运行一次,发送VISUALcrontab的环境:

VISUAL=/usr/bin/subl crontab -e

答案3

以上述方式之一设置默认编辑器确实有效,例如编辑 .bashrc 文件,导出变量 EDITOR 和 VISUAL。但是 - 至少在我的环境中 - crontab -e 不会等待编辑器关闭更新的文件并终止并显示“未进行修改”。添加

export EDITOR="xed -w"
export VISUAL="xed -w"

解决了问题。

答案4

谢谢@thomas-jensen 回答,我想建议一个小的修改,以避免在没有 GUI 可用时出现麻烦,并应用所建议的内容这里

#!/bin/sh
if [ x$DISPLAY != x ] ; then
  # GUI Enabled
  /opt/sublime_text/sublime_text -w $*
else
  vi $*
fi

相关内容