在 Sublime Text 2 上切换节点构建窗口

2024-01-09

我希望能够使用一种快捷方式来运行和终止节点进程,包括根据需要显示和隐藏构建窗口。

I press ctrl + B:

  1. 显示构建窗口
  2. 运行节点进程

I press ctrl + B again:

  1. 杀死节点进程
  2. 关闭构建窗口。

我还需要发送终止信号,以便我可以在节点应用程序中读取它并在退出之前执行一些操作。

目前我需要的第一部分正在工作,但要关闭节点应用程序,我需要ctrl + shift + B然后按 esc 关闭构建窗口。

这可能吗?如果可能的话,如何实现?

编辑 1 (2014 年 9 月 18 日)

制作了一个 Sublime Text 插件,它完全符合我上面描述的功能。目前在 ST3(Windows 和 Linux)上进行了测试。目前唯一的问题是,在 Windows 平台上,您的节点脚本不会为退出前程序获得正确的终止信号(SIGINT 或类似的信号)。我使用 sublime texts 自己的控制台来执行 io 程序 - 非常方便。如果人们对此感兴趣,可能会很快发布插件。


一种方法是,在构建系统中,首先终止正在运行的节点进程,如果不成功,则将当前文件传递到节点。所以你的node.sublime-build可能看起来像这样:

{
    "cmd": [ "killall node || node \"$file\"" ],
    "file_regex": "^[ ]*File \"(...*?)\", line ([0-9]*)",
    "selector": "source.js",
    "shell": true
}

Sublime 只允许一个命令传递多个参数,所以类似"cmd": [ "killall node ||", "node", "$file"]不起作用,尽管我认为它以前在 Sublime 2 中起作用。因此需要换行$file在转义引号中,因为否则如果路径为$file里面有一个空格。还,||这里至关重要,因为killall如果没有要终止的进程,则以状态 1(错误)退出,因此第一次它将运行 Node,但第二次则不会。

请注意,由于我们在此处的 shell 中工作,因此这是特定于平台的。我不知道如何做相当于||在 Windows 上,但你只需要这样的东西:

{
    "cmd": [ "killall node || node \"$file\"" ],
    "file_regex": "^[ ]*File \"(...*?)\", line ([0-9]*)",
    "selector": "source.js",
    "shell": true
    "windows": {
        "cmd": [ "insert whatever works here..." ]
    }
}

一个很大的限制是这会杀死所有正在运行的节点进程;如果你想让某些东西在后台运行,那会很烦人。如果有人知道如何在单个命令中定位特定节点进程,请添加到我的答案中。

其次,您可以将 cmd 包装在 bash 脚本中,这样可以更轻松地执行多项操作,例如终止特定进程。那么 cmd 数组将是[ "bash", "name-of-script.sh" ]. Using lsof获取正在运行当前文件的特定节点进程将相当容易。你也可以使用bash -c作为命令,然后将整个脚本粘贴到 cmd 数组的第二个元素中。

希望有帮助。我缺少您的一项要求:ESC仍然需要关闭构建窗口。不知道如果不编写 Sublime 插件还能做什么。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Sublime Text 2 上切换节点构建窗口 的相关文章

随机推荐