新建文件默认为plain text,不手动设置语法则ctrl+b无法触发任何构建系统;需点击右下角“plain text”选择对应语言(如python),或用ctrl+shift+p输入set syntax: python设对语法,使selector(如source.python)匹配成功。

新建文件默认是 Plain Text,不指定语法就无法触发任何构建系统——这是绝大多数人 Ctrl+B 没反应的根本原因。
右下角点击选语法是最直接的方式
Sublime Text 不会根据文件名自动识别语法,除非你已保存为 .py、.cpp 等扩展名。新建空白文件时,编辑器右下角显示 “Plain Text”,此时无论你配了多少个 .sublime-build,Ctrl+B 都不会调用任何构建命令。
- 立即点击右下角的 “Plain Text”,在弹出菜单中选择对应语言(如 Python、C、Java)
- 或按
Ctrl+Shift+P(Windows/Linux) /Cmd+Shift+P(macOS),输入Set Syntax: Python回车 - 语法一旦设对,
selector字段(如"selector": "source.python")才能匹配上,构建系统才可能被自动启用 - 如果菜单里没看到目标语言,说明对应语法包未安装或未激活(比如 F# 需单独装
fsharp-sublime插件)
保存文件前就指定语法,避免反复切换
很多人习惯先写代码再保存,结果发现运行不了,又回头去点右下角——其实可以在新建后立刻定语法,再写内容,流程更顺。
- 新建文件 → 点右下角设为 Python → 写代码 →
Ctrl+S保存为test.py - 这样从第一步起就处于正确上下文,后续构建、跳转错误、甚至插件功能(如 linter)都能即时响应
- 若临时写一段 Shell 脚本但不想立刻保存,可手动设为
Shell-Unix或source.shell,确保shell_cmd类构建能生效 - 注意:
source.c和source.cpp是两个不同 selector,C++ 文件必须设为后者,否则 C 的构建系统不会触发
语法设置不生效?检查 Packages/User 下的配置冲突
有时点了语法,右下角也显示对了,但 Ctrl+B 依然报 “No build system”——大概率是构建系统里的 selector 和实际语法名不一致,或 JSON 有隐藏错误。
- 打开一个已知能工作的
.py文件,按Ctrl+Shift+P输入View Package File,搜索Python.sublime-syntax,看它声明的scope是不是source.python(多数现代 Python 包用这个) - 对比你的
.sublime-build文件中selector字段是否完全一致(大小写、点号、有无空格) - 常见错例:
"selector": "python"(漏了source.)、"selector": "source.Python"(大写 P)、"selector": "source.python3"(不存在的标准 scope) - JSON 格式错误(比如末尾多逗号、引号不闭合)会导致整个
Packages/User/目录下的构建系统全部失效,建议粘贴到 jsonlint.com 快速校验
真正卡住人的从来不是怎么写 cmd,而是新建文件那一刻没意识到:语法不是“看起来像”,而是编辑器内部的一个精确 scope 标签;它决定了构建系统能不能被看见、能不能被选中、能不能被运行。











