在崇高文本 2 上切换节点构建窗口

Toggle Node Build Window on Sublime Text 2

本文关键字:节点 窗口 构建 高文本 文本      更新时间:2023-09-26

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

我按ctrl + B

  1. 显示生成窗口
  2. 运行节点进程

我再次按ctrl + B

  1. 终止节点进程
  2. 关闭"生成"窗口。

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

目前我需要的第一

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

这是否可能,如果可能,如何?

编辑 1 (18.09.14)

制作了一个崇高的文本插件,完全符合我上面描述的功能。目前在ST3(Windows和Linux)上测试。目前唯一的问题是,在 Windows 平台上,您的节点脚本不会为退出前的过程获得适当的终止信号(SIGINT 或类似的东西)。我使用崇高的文本自己的控制台进行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(错误)退出,因此第一次它将运行节点,但第二次不会。

请注意,由于我们在这里的 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" ] .使用 lsof 获取运行当前文件的特定节点进程将相当容易。您也可以使用 bash -c 作为命令,然后将整个脚本粘贴到 cmd 数组的第二个元素中。

希望有帮助。我缺少您的要求的一部分:关闭构建窗口仍然需要ESC。不确定在不编写Sublime插件的情况下还可以做什么。

无论如何,我在这样的窗口中修复了它

{
    "shell": true,
    "windows": {
        "cmd": "(TASKKILL /F /IM node.exe || 1)&& node '"$file'""
    }
}

我以同样的方式做了,但没有检查除.js文件以外的任何文件

{
    "cmd": [ "killall node || node '"$file'"" ],
    "selector": "*.js",
    "shell": true
    "windows": {
        "cmd": "(TASKKILL /F /IM node.exe || 1)&& node '"$file'""
    }
}

这将杀死任何正在运行的节点并重新启动选项卡已打开的文件