Sublime Text新建空白文件默认为Plain Text,需在用户设置中配置default_syntax(如"Packages/Python/Python.sublime-syntax")并重启生效,该设置仅对未保存、无扩展名的untitled文件有效。

Sublime Text 新建空白文件(Ctrl+N)默认是 Plain Text,这不是 bug,是设计如此;要让它一打开就带语法高亮,必须配 default_syntax,且路径必须精确、大小写敏感、改完必须重启。
default_syntax 怎么填才生效
它只控制「未保存、无路径、无扩展名」的 untitled 文件,其他场景(如打开已有 .py 文件)完全不走这条路。填错路径、拼错大小写、用错后缀,都会静默失效。
-
default_syntax必须写完整路径,例如:"Packages/Python/Python.sublime-syntax"(ST4)或"Packages/Markdown/Markdown.tmLanguage"(ST3) - 路径不能靠猜——先打开一个已正确高亮的
.py文件,按Ctrl+Shift+P输入Show Scope Name,看状态栏显示的source.python,再对应到Packages/Python/Python.sublime-syntax - 别手敲
Packages前面加斜杠,也别漏掉.sublime-syntax后缀;Packages/Python/python.sublime-syntax和Packages/Python/Python.sublime-syntax是两个不同文件 - 改完保存后,必须重启 Sublime Text,否则新窗口里仍显示
Plain Text
想让 .conf 或 .cfg 文件自动高亮怎么办
Sublime 默认只认 .htaccess 为 Apache 配置,对 httpd.conf、000-default.conf、.cfg 等完全不识别——它不分析内容,只靠扩展名硬匹配。
- 最快方式:打开任意
.conf文件 → 点右下角Plain Text→ 选Open all with current extension as…→ 找Apache Conf或Apache Configuration(名称必须一字不差) - 更稳妥方式:手动编辑语法专属配置,在
Packages/User/Apache Conf.sublime-settings(注意名字要跟语法名一致)里写:{"extensions": ["conf"]} - 如果同时想让
.cfg也走 Ini 语法,不要混在同一个配置里;应单独建Ini.sublime-settings,内容为:{"extensions": ["cfg"]} - 别在全局
Preferences.sublime-settings里写extensions,它只在语法专属设置中有效
为什么改了 default_syntax 还是没反应
常见失效不是因为配置逻辑复杂,而是被几个低级但隐蔽的问题卡住。
- JSON 格式错误:多了一个逗号、少了一个引号,整个用户设置加载失败,Sublime 自动回退到默认行为
- 插件冲突:比如
ApplySyntax会劫持新建文件逻辑,优先级高于default_syntax;可临时禁用插件验证 - 路径指向的语法包被禁用:进
Preferences → Package Settings看对应语法包是否勾选启用 - 误改了
Default设置文件:所有自定义必须写在Packages/User/Preferences.sublime-settings(即Settings – User),改Default会被升级覆盖
语法专属配置和项目配置怎么分清
三类配置作用域完全不同,放错位置就等于没写。
- 全局设置:写在
Packages/User/Preferences.sublime-settings,影响所有文件,比如font_size、tab_width - 语法专属设置:通过
Preferences → Settings – Syntax Specific打开,生成如Packages/User/JavaScript.sublime-settings,只对source.js作用域生效,可用于设tab_width: 2或禁用括号自动补全 - 项目专属设置:在
Project → Edit Project里加"settings": {...}块,或在项目根目录放.sublime-project文件,优先级最高,但只对该项目内文件生效 - 注意:
default_syntax只在全局用户设置中起作用,不能写进语法或项目配置里
真正容易被忽略的是:空文件右下角显示的编码(如 UTF-8)只是当前解码标识,不代表文件已含字节;而 default_encoding_on_save 才决定落盘编码——新建文件没内容时,它不参与任何初始化过程。


















