如何在 VS Code 中编辑 crontab?

ico*_*ast 5 cron visual-studio-code

如果我尝试使用 Visual Studio Code(在 macOS 10.15 上)来编辑我的 crontab,它会打开一个没有我的 crontab 内容的空文件。

$ VISUAL='code' crontab -e
crontab: no changes made to crontab
Run Code Online (Sandbox Code Playgroud)

我实际上并不期望这会起作用(没有-w),但为了完整性而将其包含在内。但是当我添加-w它时它仍然失败。

$ VISUAL="code -w" crontab -e
crontab: code -w: No such file or directory
crontab: "code -w" exited with status 1
Run Code Online (Sandbox Code Playgroud)

我突然想到引用可能有些奇怪,但单引号和以下内容都没有解决任何问题:

$ function codew() {
function> code -w "$1"
function> }
$ export VISUAL='codew'
$ crontab -e
Run Code Online (Sandbox Code Playgroud)

问题似乎是 crontab 的临时文件实际上并不存在。但是我该如何解决这个问题?如何使用 VS Code 编辑 crontabs?

Dmi*_*nko 5

  1. 创建一个文件touch ~/code-wait.sh
#!/bin/bash
OPTS=""
if [[ "$1" == /tmp/* ]]; then
    OPTS="-w"
fi

/usr/local/bin/code ${OPTS:-} -a "$@"
Run Code Online (Sandbox Code Playgroud)
  1. 使这个文件可执行:
chmod 755 ~/code-wait.sh 
Run Code Online (Sandbox Code Playgroud)
  1. 添加到您的.bashrc.bash_profile.zshrc
export VISUAL=~/code-wait.sh
export EDITOR=~/code-wait.sh
Run Code Online (Sandbox Code Playgroud)
  1. 运行命令:
EDITOR='code' crontab -e
Run Code Online (Sandbox Code Playgroud)

  • 它有什么作用? (2认同)
  • 但是嗯...它有什么作用?看起来它获取了其他命令行参数并以某种方式将它们附加到打开 vscode 的调用中? (2认同)

sor*_*rin 1

这是一个相当复杂的问题,因为无法检测哪个工具调用首选编辑器。TTY 是相同的,没有环境变量可以提供帮助。

尽管如此,我仍然能够想出一个解决方案,为临时文件启用前台模式(等待)。恕我直言,大多数(如果不是全部)使用外部编辑器并等待它们保存文件的工具确实使用临时文件。

完整脚本位于https://github.com/ssbarnea/harem/blob/master/bin/edit但我将在此处包含主要片段:

#!/bin/bash
OPTS=""
if [[ "$1" == /tmp/* ]]; then
    OPTS="-w"
fi

/usr/local/bin/code ${OPTS:-} -a "$@"
Run Code Online (Sandbox Code Playgroud)