【发布时间】:2021-10-31 22:48:03
【问题描述】:
我正在尝试通过 sublime 构建系统 (Sublime Text) 运行 python scripts。我想构建启动终端,执行程序并等待按任意键。
{
"shell_cmd": "start cmd.exe @cmd /c python -u \"$file\" && echo. && pause",
"file_regex": "^(..[^:]*):([0-9]+):?([0-9]+)?:? (.*)$",
"working_dir": "${file_path}",
"selector": "source.python",
"shell": "true"
}
上面的代码会执行,但即使添加了pause,它也会在完成后立即终止。使用/k 终端保持在屏幕上,但我们手动关闭它而不是按任何键。
如何配置 shell 脚本,使其在终端中运行代码并在按下某个键时结束。
【问题讨论】:
-
为什么要从 cmd shell 中的另一个 cmd 实例打开一个 cmd 实例?为什么不只是
"@start python -u \"$file\" & echo. & pause"。 -
@Compo sublime 构建系统不允许输入只是输出。另外,我不想使用文件作为输入。我想接受用户输入,所以我正在打开 cmd.
shell_cmd正在打开 cmd 只是 cmd 实例。顺便说一句,我试过你的命令仍然暂停。 -
我不知道这对我的评论意味着什么。您的问题表明它没有暂停,尽管您使用了
pause命令,但您上面的评论抱怨它正在暂停。现在,除非我无法理解这项任务的基本机制,否则在我看来它似乎已经奏效了。请尝试正确解释您尝试执行的任务,执行时究竟发生了什么,您希望发生什么,为什么您抱怨不想使用文件,当您发布使用文件的命令,用户输入如何相关 -
@Compo,抱歉我不清楚。 Sublime Text 提供构建系统以允许用户运行外部程序。构建系统的常见用途示例包括:编译、转译、linting 和执行测试。构建系统通过 JSON 指定并保存在扩展名为 .sublime-build 的文件中。以下是构建系统的基本示例。此构建系统将执行当前打开的 Python 文件。
"cmd": ["python", "$file"]。执行的输出将显示在 Sublime 的底部;如果在 python 文件中有输入,我们不能通过这个构建系统。 -
如果
"cmd": ["python", "$file"]在cmd中执行python文件,那你为什么用"shell_cmd": "start cmd.exe @cmd /c python -u \"$file\""。当您使用"cmd":或"shell_cmd":打开shell 时,即cmd.exe。因此,一旦打开,您将使用内置的cmd.exe命令start启动第二个cmd.exe会话,并传递参数@cmd /c python -u "$file"。因此调用第三个 cmd.exe 命令并传递以下参数python -u "$file。你明白我现在的意思了吗?您似乎正在运行三个cmd.exe实例,只是为了运行python脚本!
标签: python cmd sublimetext3 build-system