繁体   English   中英

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

[英]Toggle Node Build Window on Sublime Text 2

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

我按ctrl + B

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

我再次按ctrl + B

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

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

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

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

编辑1(18.09.14)

做了一个崇高的文本插件,完全按照我上面的描述。 目前在ST3(Windows和Linux)上进行了测试。 目前唯一的问题是在Windows平台上,您的节点脚本不会获得适当的终止程序杀死信号(SIGINT或类似的东西)。 我使用sublime文本自己的控制台进行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\""
    }
}

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM