Javascript 在Sublime Text 2上切换节点构建窗口
我希望能够使用一个快捷方式来运行和终止节点进程,包括根据需要显示和隐藏构建窗口 我按ctrl+B键Javascript 在Sublime Text 2上切换节点构建窗口,javascript,node.js,sublimetext2,Javascript,Node.js,Sublimetext2,我希望能够使用一个快捷方式来运行和终止节点进程,包括根据需要显示和隐藏构建窗口 我按ctrl+B键 显示生成窗口 运行节点进程 我再次按下ctrl+B: 终止节点进程 关闭构建窗口 我还需要发送kill信号,以便我可以在节点应用程序中读取它,并在退出之前执行两个操作 目前,我需要的第一部分是工作,但要关闭节点应用程序,我需要ctrl+shift+B,然后按esc关闭构建窗口 这可能吗?如果可能,如何实现 编辑1(18.09.14) 制作了一个完美的文本插件,完全符合我上面所描述的。目前在ST3(
显示生成窗口
运行节点进程
我再次按下ctrl+B
:
终止节点进程
关闭构建窗口
我还需要发送kill信号,以便我可以在节点应用程序中读取它,并在退出之前执行两个操作
目前,我需要的第一部分是工作,但要关闭节点应用程序,我需要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
}
{
"cmd": [ "killall node || node \"$file\"" ],
"file_regex": "^[ ]*File \"(...*?)\", line ([0-9]*)",
"selector": "source.js",
"shell": true
"windows": {
"cmd": [ "insert whatever works here..." ]
}
}
升华只允许一个命令传递多个参数,因此类似于“cmd”:[“killall node | | |”,“node”,“$file”]
的命令不起作用,尽管我认为它以前在升华2中起作用。因此,需要将$file
用转义引号括起来,因为如果$file
的路径中有空格,则命令将失败。另外,|
在这里非常关键,因为如果没有要终止的进程,killall
将以1(错误)的状态退出,因此第一次它将运行节点,但第二次它不会
注意,因为我们在这里使用shell,所以这是特定于平台的。我不知道如何在Windows上执行与| |
等效的操作,但您只需要这样做:
{
"cmd": [ "killall node || node \"$file\"" ],
"file_regex": "^[ ]*File \"(...*?)\", line ([0-9]*)",
"selector": "source.js",
"shell": true
}
{
"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”,“script.sh的名称]
。使用lsof
可以很容易地获得运行当前文件的特定节点进程。您还可以使用bash-c
作为命令,然后将整个脚本粘贴到cmd数组的第二个元素中
希望有帮助。我缺少您的一项要求:ESC
仍然需要关闭构建窗口。我不知道如果不写一个超级插件还能做些什么。不管怎样,我在windows中就这样修复了它,笨蛋?谁在乎
{
"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\""
}
}
这将杀死所有正在运行的节点并重新启动其选项卡处于打开状态的文件您的生成系统使用的是什么语言?