sublime text新建文件默认为plain text,需在用户设置中配置default_syntax(如"packages/python/python.sublime-syntax"),路径须精确、大小写敏感,且修改后必须重启才生效。

Sublime Text 新建文件默认是 Plain Text,改不了只是因为你没配对 default_syntax 路径,或者没重启——它不热加载,也不看文件名、不猜内容,只认你填的那串字符串。
怎么让 Ctrl+N 新建的文件直接高亮?
只有 default_syntax 这一个配置项能控制未保存、无扩展名的空白文件。它不作用于已打开的 .py 或 .js 文件,那些全靠扩展名自动匹配。
- 打开
Preferences → Settings – User,在右侧 JSON 里加一行:"default_syntax": "Packages/Python/Python.sublime-syntax" - 路径必须精确到
.sublime-syntax(ST4)或.tmLanguage(ST3),大小写敏感,不能多空格、不能少斜杠 - 别手敲——先打开一个正确识别的 .py 文件,按
Ctrl+Shift+P输入Show Scope Name,状态栏显示source.python,对应路径基本就是Packages/Python/Python.sublime-syntax - 改完必须重启 Sublime Text,否则新窗口也不会生效
为什么点了右下角设为默认,.ts 文件还是 Plain Text?
点右下角语法名 → 选 Set as Default for .ts Files 是最安全的绑定方式,但它不是往全局设置里硬塞,而是往对应语法包的用户配置中写 "extensions": ["ts"]。
- 这个操作会生成或修改
Packages/User/TypeScript.sublime-settings(不是Preferences.sublime-settings) - 如果手动在全局设置里写了
"extensions": ["ts"],Sublime 会直接忽略 - 检查是否启用了
detect_syntax: true(搜一下),它会覆盖你的手动设定 - 确认 TypeScript 插件已启用:菜单
Preferences → Package Settings → TypeScript存在且可点开
new_file_content 和 default_encoding_on_save 怎么配合用?
new_file_content 只在 Ctrl+N 时生效,default_encoding_on_save 才真正决定落盘编码——这两者和 default_syntax 是三件套,缺一不可。
-
new_file_content内容里换行必须用\n,别用\r\n,否则可能显示成文字\r - 示例(YAML 前置声明):
"new_file_content": "---\ntitle: \"\"\ndate: \"\"\n---\n" -
default_encoding_on_save设为"UTF-8"后,每次Ctrl+S都以 UTF-8 写入;要带 BOM 必须写"UTF-8 with BOM",其他写法静默失效 -
default_extension对新建无效,别试;空文件右下角显示 “UTF-8” 只是解码标识,不代表磁盘上有字节
为什么改了没反应?常见失效点
不是 Sublime 不灵,是它对配置异常严格,错一个字符就回退到 Plain Text。
-
default_syntaxes或default_syntac拼错,整行被忽略 - 路径指向的语法包不存在(比如写了 TypeScript 但没装插件),或被禁用(
Preferences → Package Control → Disable Package) - 插件冲突:ApplySyntax、DefaultFileSyntax 等会劫持新建逻辑,优先级高于
default_syntax;临时禁用它们验证 - JSON 格式错误:多逗号、少引号、中文标点,整个用户设置加载失败,Sublime 不报错,只用默认行为
最易被忽略的是:default_syntax 只管「未保存的 untitled」,一旦你保存为 foo.py,后续所有操作(重开、切换标签)都按扩展名走,和这个配置再无关系——它不是全局语言开关,而是一次性启动器。











