新建无后缀文件默认显示plain text,因sublime仅依赖扩展名匹配语法,不分析内容;需点击右下角手动选html等语法,或保存为对应后缀后绑定扩展名。

新建文件不识别语法,是因为 Sublime Text 根本不分析内容,只靠扩展名匹配;没后缀的文件默认就是 Plain Text,这不是 bug,是设计如此。
新建无后缀文件后右下角显示 Plain Text 怎么办
这是最常见也最容易误解的场景:你按 Ctrl+N 新建一个空标签页,输 html 再按 Tab,结果没补全、没高亮——因为此时文件还没扩展名,Sublime 不会主动猜它是 HTML。
- 先手动设置语法:点击右下角
Plain Text→ 选HTML(注意不是HTML (Django)或其他方言) - 再输入
html+Tab,Emmet 才能触发基础结构补全 - 如果想让所有新建 HTML 文件都自动带结构,得另存为
.html后缀,之后再打开同名文件才会继承语法绑定 - 别指望“新建即高亮”:Sublime 没有 VS Code 那种基于首行或内容的实时推断机制
新建 .ts、.vue、.env 等文件仍显示 Plain Text
这些扩展名默认不在 Sublime 的内置语法映射表里,哪怕插件已安装,也必须手动绑定一次,否则新建/双击打开都无效。
- 打开一个
.ts文件 → 右下角点Plain Text→ 选TypeScript→ 再点右下角,选Set as Default for .ts Files - 对
.vue,必须装Vue Syntax Highlight(名字一字不能错),然后同样走Set as Default for .vue Files,且确保菜单里出现的是Vue Component -
.env类文件更麻烦:原生不支持内容识别,若想按export关键字切到ShellScript,得装ApplySyntax插件,并在用户设置里加规则,改完必须重启才生效 - 大小写敏感:
.ENV和.env是两个不同扩展名,要分别绑定
为什么改了 Settings – User 还是不生效
很多人直接在全局 Preferences.sublime-settings 里加 "extensions": ["ts"],这完全无效——Sublime 只认语法包专属配置里的 extensions 字段。
- 正确路径:先用
Set as Default for .xxx Files触发一次,Sublime 会自动生成类似Packages/User/TypeScript.sublime-settings的文件 - 再去编辑那个文件,把扩展名加进去,比如
{"extensions": ["ts", "tsx"]} - 千万别手写
syntax_map或硬塞进全局设置,它会被忽略 - 如果菜单里压根没出现
Set as Default选项,说明你还没在这类文件上手动切换过语法,先点右下角选一次目标语法,选项才会出来
新建文件语法偶尔“回退”成 Plain Text
这不是配置丢失,而是 Sublime 记住了你上次手动指定的语法,哪怕后来改了绑定规则,它也会优先沿用“视图级记忆”。
- 临时解决:按
Ctrl+Shift+P→ 输入Set Syntax: HTML(或其他目标语法)回车,强制重置当前视图 - 彻底清除记忆:关闭该标签页,再用
File → New File重新开一个,不要从历史列表里恢复 - 插件干扰也要排查:
ignored_packages里如果写了"HTML"或"Vue Component",对应语法就永远加载不了,删掉后必须执行Ctrl+Shift+P → Reload Syntax Definitions - Emmet 失效往往只是语法没设对:
div.container+Tab没反应,90% 是右下角没显示HTML,而不是 Emmet 被禁用
真正容易被忽略的是:Sublime 的语法绑定是“扩展名 + 手动触发”双依赖,缺一不可;而且一旦某个文件被手动指定过语法,它的视图状态就会覆盖所有后续配置更新——这点比路径或插件问题更隐蔽。











