Sublime Build面板默认仅显示一次性stdout/stderr快照,不保留历史、不自动滚动、不展示环境信息;需配置"quiet": false和"shell_cmd": "python -u "$file" 2>&1"并配合ANSIescape插件才能获取完整可交互的彩色日志。

构建系统输出面板默认不显示详细日志
Sublime 的 Build 面板(Ctrl+B 呼出)只显示命令执行后的 stdout/stderr 快照,不保留历史、不自动滚动到底部、也不展示完整环境信息。所谓“详细日志”,比如 Python 的 print()、logging.info()、未捕获异常的完整堆栈、甚至子进程启动过程,默认全被截断或静默丢弃。
必须显式启用 quiet 和 shell_cmd 才能暴露细节
默认构建系统使用 "target": "exec",它会主动压制部分输出。要看到真实执行过程,得改用 shell_cmd 并关闭静默模式:
-
"quiet": false—— 强制显示构建开始/结束提示、命令路径、退出码 -
"shell_cmd": "python -u "$file" 2>&1"——-u禁用缓冲,2>&1合并 stderr 到 stdout,避免错误被吞掉 - 不要用
"cmd"数组配 Python 脚本,Windows 下易因空格路径崩,shell_cmd更鲁棒 - 若需查看环境变量,可在
shell_cmd里加env | head -20 && python -u "$file"(Linux/macOS)
file_regex 配错会导致 traceback 不可点击跳转
即使看到红色 Traceback,双击错误行无法跳转到源码,90% 是 file_regex 没匹配上。Python 错误格式固定,但路径分隔符和括号容易写错:
- 正确正则:
"file_regex": "File "([^"\\]+)", line ([0-9]+)"(注意双引号、反斜杠转义) - Windows 路径含反斜杠,必须写成
\\;macOS/Linux 正斜杠不用额外转义 - 如果错误里带 Unicode 文件名(如中文路径),
file_regex会失效,此时只能手动复制路径 + 行号搜索 - 测试方法:在控制台运行
sublime.active_window().run_command("build"),看是否触发跳转
想看彩色日志?ANSIescape 插件是唯一解
Spring Boot、Rust cargo test、Node.js npm run dev 输出的 [32mOK[0m 这类 ANSI 转义序列,在 Build 面板里默认显示为乱码,不是编码问题,是 Sublime 不解析终端颜色。
- 装插件:
Ctrl+Shift+P→Package Control: Install Package→ 输入ANSIescape - 装完后无需配置,Build 面板会自动识别并渲染颜色
- 注意:仅对 Build 面板生效,控制台(
Ctrl+`)里的print()仍为黑白 - 若颜色错位,检查构建命令是否漏了
-u参数——缓冲未禁用时,ANSI 序列可能被截断
file_regex 多一个括号就失效,shell_cmd 少个引号在 Windows 下直接报错,而 ANSIescape 对没带颜色的纯文本毫无影响——这些边界情况,往往比功能本身更消耗调试时间。

















