Sublime Text 的 Build 面板不保存日志,需通过构建系统重定向输出到文件;必须启用 "shell": true 并使用 -u 参数禁用缓冲,路径注意跨平台和权限问题。

Sublime Text 的 Build 面板(Ctrl+B 弹出的底部区域)**不保存、不导出、也不提供 API 访问运行日志**——你看到的只是 stdout/stderr 的一次性快照,关掉就丢。真要“自动保存日志”,必须让程序自己把输出写进文件,而不是依赖 Sublime 界面。
构建系统里用 > 重定向必须配 "shell": true
漏掉这行是新手最常踩的坑:Sublime 会把 > 当作 Python 参数传进去,报错类似 TypeError: main() takes 0 positional arguments 或直接静默失败。
-
"cmd": ["python", "-u", "$file", ">", "output.txt"]必须和"shell": true成对出现 -
-u是关键:禁用输出缓冲,确保日志实时落盘(尤其有 print + time.sleep 组合时) - 路径用相对名(如
output.txt)默认写入当前文件所在目录;用绝对路径需注意跨平台斜杠(Windows 用C:\path\out.txt,macOS/Linux 用/path/out.txt)
覆盖、追加、分离错误流:三种 cmd 写法对应不同场景
全靠 shell 重定向符号控制行为,不用改代码:
- 覆盖式(每次新结果替代旧文件):
"cmd": ["python", "-u", "$file", ">", "output.txt"] - 追加式(适合长期观察日志趋势):
"cmd": ["python", "-u", "$file", ">>", "run.log"]—— 注意双>,不是拼写错误 - 分离 stdout/stderr(调试时快速定位是逻辑错还是环境错):
"cmd": ["python", "-u", "$file", ">", "stdout.log", "2>", "stderr.log"]
想实时看日志滚动?别硬刚 Build 面板,换 Terminus
Build 面板天生不支持输入、无法 Ctrl+C 中断、不能保持长连接——它不是终端,只是命令执行完的结果快照。
- 装插件:
Ctrl+Shift+P→ 输入Terminus: Open Default Shell in Panel - 在里面直接跑
python manage.py runserver或npm start,日志实时刷新 - 要导出?选中文字 → 右键
Copy;或在 Terminus 里执行tail -f app.log | tee /dev/tty实现屏显+落盘双写
真正容易被忽略的点不在语法,而在执行上下文:重定向是否生效,取决于 "shell": true 是否启用、Python 脚本是否用了 -u、以及目标路径是否有写权限——尤其是 macOS/Linux 下往系统级路径写,或 Windows 下路径含空格未加引号,都会静默失败。


















