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

我希望能够使用一个快捷方式来运行和查杀包含显示和隐藏构build窗口的节点进程。

我按ctrl + B

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

我再次按ctrl + B

  1. 杀死节点进程
  2. closures构build窗口。

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

目前我需要的第一部分是工作,但要closures节点的应用程序,我需要ctrl + shift + B ,然后按Escclosures构build窗口。

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

编辑1(18.09.14)

做了一个崇高的文字插件,正是我所描述的。 目前在ST3(Windows和Linux)上testing。 目前唯一的问题是,在Windows平台上,你的节点脚本不会得到正确的杀死信号(SIGINT或类似的)用于出口前程序。 我使用崇高的文本自己的控制台为io程序 – 非常方便。 如果有人对此感兴趣,可能很快就会发布插件。

一种方法是,在你的构build系统中,先杀死正在运行的节点进程,如果不成功,则将当前文件传递给节点。 所以你的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"]不起作用,尽pipe我认为它在Sublime 2中起作用。因此,需要将$file包装在转义引号中,否则如果到$file的path中有空格,命令将会失败。 另外, || 在这里是关键的,因为如果没有进程需要kill, 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数组的第二个元素中。

希望有所帮助。 我缺less一个你的要求: ESC仍然需要closures构build窗口。 不知道还有什么可以做,而不写一个崇高的插件。

无论如何,我把它固定在这样的窗户,愚蠢? pipe他呢

 { "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\"" } } 

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