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

时间:2013-10-30 09:20:31

标签: javascript node.js sublimetext2

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

我按ctrl + B

  1. 显示构建窗口
  2. 运行节点流程
  3. 我再次按ctrl + B

    1. 杀死节点流程
    2. 关闭构建窗口。
    3. 我还需要发送kill信号,以便我可以在节点应用程序中读取它并在退出之前执行几个操作。

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

      这是可能的,如果可能,怎么样?

      编辑1(18.09.14)

      制作了一个完美的文本插件,完全按照我的描述进行操作。目前在ST3(Windows和Linux)上进行了测试。目前唯一的问题是在Windows平台上,您的节点脚本不会获得适当的终止程序杀死信号(SIGINT或类似的东西)。我使用sublime文本自己的控制台进行io程序 - 非常方便。如果人们对此感兴趣,可能很快就会发布插件。

3 个答案:

答案 0 :(得分:1)

一种方法是,在您的构建系统中,首先杀死正在运行的节点进程&如果不成功则将当前文件传递给节点。所以你的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插件,还不确定还能做些什么。

答案 1 :(得分:1)

无论如何,我在那样的窗户中修复它,愚蠢的?谁在乎

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

答案 2 :(得分:0)

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

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

这将终止所有正在运行的节点并重新启动其选项卡已打开的文件