在Sublime 3中保存文件后如何运行Shell命令

时间:2019-01-10 18:34:17

标签: sublimetext3

在保存文件后,我一直试图创建一个自定义的shell命令来运行。该命令应在文件的相同位置运行。

我已经根据用户的偏好提出了这个建议,但是没有成功。

 "on_post_save_user": [
{
  "cmd": ["shell command"]
}

1 个答案:

答案 0 :(得分:0)

根据您的问题,我将假设您使用Hooks软件包能够基于事件运行任意命令。如果尚未安装该软件包,则也需要这样做。 Sublime核心中没有提供此处讨论的项目。

此程序包可以执行所需的任意命令,但是请注意,这意味着 Sublime 命令;这是Sublime核心或已安装的软件包和插件提供的命令。因此,包含shell命令的名称将无效。 Sublime默默地忽略了您告诉它运行的命令,而该命令并不知道。

也就是说,exec命令可直接在任何Sublime安装中使用,并且可以执行您告诉它的任何任意shell命令或程序。例如,此命令用于执行build system

实际上,默认情况下,构建系统中可用的大多数键(不包括告诉Sublime何时应应用构建的键)实际上是arguments to the exec command,它们告诉执行什么。

您特别感兴趣的是shell_cmd参数,它接受您可能在命令提示符中输入的任意命令并执行它。

根据相关软件包的文档,所需的配置选项如下:

"on_post_save_user": [
  {
    // Runs `exec` command
    "command": "exec",

    // Invokes `exec` with `shell_cmd="google-chrome"`
    "args": {
      "shell_cmd": "google-chrome"
    },

    // Runs `exec` via `window.run_command`
    "scope": "window"
  }
]

需要注意的是,我没有使用这个特定的程序包,也无法验证这是否是必需的,所以这告诉程序包运行exec命令(实际上是一个{{ 1}}命令),告诉它执行window

google-chrome可能需要其他选项才能执行所需的操作,具体取决于所执行的操作。从软件包文档中还不清楚它是否支持exec之类的标准构建系统变量来表示当前文件,这是否可能是一个问题。

还请注意,由于$file命令是执行构建系统的命令,因此,如果您在用户首选项中打开了exec(默认情况下,除非您将其关闭,否则默认为打开),因此{{1 }}命令将在窗口底部打开一个面板,告诉您正在运行的命令正在执行的操作。