Sublime Text新建文件默认为Plain Text,需通过default_syntax(指定完整路径如"Packages/Python/Python.sublime-syntax")控制语法高亮,仅对Ctrl+N新建的untitled文件生效;扩展名自动识别须用View→Syntax→Open all with current extension as…绑定;new_file_content和default_encoding_on_save分别控制初始内容与保存编码,修改后须重启。

Sublime Text 新建文件默认是 Plain Text,想让它一打开就带语法高亮、模板内容或按扩展名自动识别,不能只改一个地方——得区分场景:新建空白文件、保存后的文件、首次打开的已有文件,各自走不同路径。
default_syntax 只控制 Ctrl+N 新建的 untitled 文件
这个字段是唯一能影响「没保存、没路径、没内容」新标签页的配置。它不看文件名、不看内容,只认你填的路径字符串。
- 必须写在
Preferences → Settings – User的 JSON 里,例如:"default_syntax": "Packages/Python/Python.sublime-syntax" - 路径大小写敏感,
Packages/Python/python.sublime-syntax或Packages/python/Python.sublime-syntax都会失效 - Sublime Text 4 必须用
.sublime-syntax后缀;.tmLanguage路径仅兼容旧版,ST4 中多数已不加载 - 改完必须重启 Sublime,部分版本不重启不重载语法绑定
- 如果右下角仍显示 “Plain Text”,先检查是否装了 ApplySyntax 等插件——它们会劫持新建逻辑,优先级高于
default_syntax
Open all with current extension as… 是绑定 .js/.ts/.cfg 等后缀的正统方式
这是 Sublime 官方支持的、最稳定可靠的扩展名映射入口,不是临时切换,而是写入用户配置并持久生效。
- 操作前提:先打开一个带目标后缀的文件(如
config.cfg),再点菜单View → Syntax → Open all with current extension as… → Ini - 它会自动生成并写入
Packages/User/Ini.sublime-settings,内容类似:{"extensions": ["cfg"]} - 注意:文件名大小写敏感(
.Vue和.vue是两个扩展名),macOS/Linux 下尤其要核对 - 已打开的同后缀文件不会自动刷新语法,需关闭重开,或手动
Ctrl+Shift+P → Set Syntax: Detect Syntax - 别手动往
Preferences.sublime-settings里塞extensions字段——它只在语法专属配置文件中有效,放错位置直接静默忽略
语法专属配置(如 JavaScript.sublime-settings)决定缩进、补全等行为
语法高亮只是第一步,真正影响编码体验的是语法专属设置:缩进宽度、空格转制表符、括号自动补全等。这些必须绑定到具体语法,而非文件后缀。
- 先确保右下角显示的是目标语法(如 “JavaScript”),再执行
Preferences → Settings – Syntax Specific - 生成的文件名必须和语法名完全一致:
JavaScript.sublime-settings对应source.js作用域,TypeScript.sublime-settings对应source.ts - 常见配置项:
"tab_size": 2、"translate_tabs_to_spaces": true、"auto_complete": false - 如果改了没反应,大概率是语法没正确绑定——比如
.ts文件被识别为source.js(因没装 TypeScript 插件),那TypeScript.sublime-settings就永远不会加载 - 已打开文件需重载语法才能生效,快捷键:
Ctrl+Shift+P → Set Syntax: JavaScript
new_file_content + default_encoding_on_save 控制新建文件的初始内容与编码
这两个字段配合 default_syntax,才能实现“新建即可用”的完整体验,但限制极多,容易踩坑。
-
new_file_content只在Ctrl+N时生效,双击侧边栏、拖入新标签、菜单 New File 都不触发 - 内容中换行必须用
\n,\r\n会被当作文本字符显示 - 示例(Markdown 前置声明):
"new_file_content": "---\ntitle: \"\"\ndate: \"\"\n---\n" -
default_encoding_on_save才真正决定保存时用什么编码,"UTF-8"是推荐值;fallback_encoding仅用于读取乱码老文件,不影响保存 - 二者都不支持变量(如
${date}),要动态内容必须上插件(如 FileTemplates)
最容易被忽略的一点:所有这些配置都依赖「语法包存在且启用」。如果 default_syntax 指向 Packages/TypeScript/TypeScript.sublime-syntax,但 TypeScript 插件被禁用或根本没安装,Sublime 就会退回到 Plain Text,且不报任何错误。验证方式很简单——打开一个真实 .ts 文件,看右下角能否正常显示 TypeScript;不能,就先解决语法包问题,再调配置。


















