sublime text 默认不识别 .blade.php 文件,因其不在原生扩展名白名单中,导致右下角显示 plain text 或 php;需通过“open all with current extension as… → html (laravel blade)”绑定扩展名,或手动在用户设置中添加 "extensions": ["blade.php", "blade"] 实现自动高亮。

Sublime Text 默认根本不认识 .blade.php 文件——不是插件没装对,是编辑器压根没把这类文件当 Blade 处理,高亮、括号匹配、变量识别全失效。
为什么 .blade.php 文件右下角显示 Plain Text 或 PHP?
Sublime 的语法识别完全依赖文件扩展名映射和当前激活的语法定义。它原生不包含 Blade 支持,.blade.php 不在默认白名单里,所以打开后自动 fallback 到最宽松的 Plain Text 或按 .php 后缀误判为纯 PHP 语法。
- 这不是插件故障,而是“未注册扩展名”的标准行为
- 即使已安装
Laravel Blade Highlighter,若未显式绑定后缀,它也不会主动接管 - 手动点击右下角选
Blade有时无效,因为该插件注册的实际语法名常为HTML (Laravel Blade),而非字面意义的Blade
怎么让 .blade.php 自动高亮?只改一处配置
最稳的方式是直接告诉 Sublime:“所有 .blade.php 文件,默认用 Laravel Blade 的语法解析”。不需要重启,改完立刻生效。
- 打开一个
.blade.php文件,点击右下角语言名 → Open all with current extension as… → 搜索并选择HTML (Laravel Blade) - 这个操作会自动往
Packages/User/Preferences.sublime-settings里写入:"extensions": ["blade.php"] - 如果想同时支持旧式
.blade文件,补上:"extensions": ["blade.php", "blade"] - 别手写
syntax路径(如Packages/Laravel Blade Highlighter/blade.tmLanguage),容易拼错或路径失效
装 Laravel Blade Highlighter 还是 Blade Snippets?
先装 Laravel Blade Highlighter,它负责语法解析和高亮;Blade Snippets 是可选补全插件,但二者共存必须关掉它的高亮功能,否则冲突。
-
Laravel Blade Highlighter自带完整.sublime-syntax定义,覆盖@if、@props、{{ }}、PHP 嵌入块等全部结构,Laravel 9+ 新语法也支持 -
Blade Snippets若开启disable_syntax_highlighting: false(默认值),会覆盖高亮规则,导致@section变灰、@endphp匹配错乱 - 如需补全,安装
Blade Snippets后,进Preferences → Package Settings → Blade Snippets → Settings – User,加一行:"disable_syntax_highlighting": true - 别碰 “Laravel 5 Snippets”——2026 年还在用这玩意,
@once、@scope全不识别
高亮正常了,但 @foreach 补全不触发?检查作用域是否被覆盖
Emmet 和部分补全插件依赖 Sublime 的 scope(作用域)判断上下文。如果 Blade 高亮用了非标准 scope 名,补全可能静默失效。
- 把光标停在
@后,按Ctrl+Shift+P→ 输入Developer: Show Scope Name,看输出里有没有source.blade或text.html.laravel-blade - 如果只有
source.php或text.html.basic,说明语法定义没加载成功,回退检查extensions是否拼写正确 - Emmet 要支持 Blade 补全,需在
Emmet → Settings – User里加:"syntax_scopes": {"blade": "html"} - 主题也影响显示:某些主题(如 Monokai)对
support.function.blade这类自定义 scope 缺少颜色定义,换Material Theme或Brogrammer更稳妥
真正卡住人的从来不是“装不装得上”,而是 .blade.php 扩展名没被正确映射、插件间 scope 冲突、或者主题压根没定义 Blade 特有作用域的颜色——这三处不动,装十个插件也没用。











