blade 文件无高亮需先确认文件类型是否被识别为 html (laravel blade),手动设置或配置 extensions 关联 .blade.php;推荐仅安装 laravel blade highlighter,避免与 blade snippets 冲突;检查主题是否支持 blade 语法作用域,必要时修改 .tmtheme 文件或更换 blade 友好主题。

Blade 文件没高亮?先确认文件类型是否被识别为 Blade
Sublime 默认不认 .blade.php 后缀,打开后右下角常显示 Plain Text 或 PHP,这时语法高亮根本不会触发——不是插件没装好,是编辑器压根没“意识到”你在写 Blade。
- 手动设置:点击右下角当前语言名 → 搜索并选择
HTML (Laravel Blade)(注意不是Blade单独一项,部分插件注册的是这个名称) - 自动关联:安装插件后,多数新版
Laravel Blade Highlighter会自动把.blade.php和.blade映射过去;若没生效,可进Preferences → Settings – Syntax Specific,加一行:"extensions": ["blade.php", "blade"]
- 验证方法:新建一个
test.blade.php,输入@if($user){{ $user->name }}@endif,看@if和{{ }}是否有不同颜色
装哪个插件?别同时装 Blade Snippets 和 Laravel Blade Highlighter
这两个插件定位不同:Blade Snippets 提供 @foreach、@include 等代码补全,而 Laravel Blade Highlighter 负责语法解析和高亮。装两个容易冲突,比如 @section 高亮失效或括号匹配错乱。
- 只装
Laravel Blade Highlighter就够用——它自带blade.tmLanguage定义,覆盖指令、变量插值、注释、PHP 嵌入等全部结构 - 如果需要补全,再单独装
Blade Snippets;但要关掉它的语法高亮功能(在插件设置里找"disable_syntax_highlighting": true) - 避坑:别搜 “Laravel 5 Snippets”,那是老版本,已多年未更新,对 Laravel 9+ 的
@props、@once等新语法完全不识别
高亮颜色不对或部分失效?检查主题是否兼容 tmLanguage 规则
Laravel Blade Highlighter 依赖 Sublime 的语法作用域(scope),比如 @if 是 keyword.control.blade,{{ }} 是 meta.interpolation.blade。如果当前主题(如 Monokai、Material Theme)没定义这些 scope 的颜色,就会退成默认灰或全白。
- 临时验证:换回默认主题
Preferences → Color Scheme → Default → Monokai,看是否恢复高亮 - 长期解决:进主题的
.tmTheme文件(路径见Preferences → Browse Packages),搜索keyword.control.blade,加一条规则:<dict><key>name</key><string>Blade Control Keyword</string><key>scope</key><string>keyword.control.blade</string><key>settings</key><dict><key>foreground</key><string>#FF6B6B</string></dict></dict>
- 懒人方案:直接装
Blade-friendly主题,比如One Dark Pro或Nord,它们已预置 Blade scope 支持
重启后还是不生效?可能是 Package Control 安装卡在缓存层
Package Control 有时会静默失败:插件看似装上了,但 Packages/Laravel Blade Highlighter/ 目录下没有 blade.tmLanguage 文件,或者文件为空——这是网络中断导致下载不全,但 UI 没报错。
- 查证方式:进
Preferences → Browse Packages…→ 找到Laravel Blade Highlighter文件夹 → 确认里面有blade.tmLanguage(不是 .sublime-settings 或 README) - 重装命令:打开控制台
Ctrl+`,粘贴运行:import urllib.request,os; pf='Laravel Blade Highlighter'; ip=os.path.join(sublime.packages_path(),pf); os.path.exists(ip) or urllib.request.urlretrieve('https://codeload.github.com/Medalink/laravel-blade/zip/refs/heads/master', '/tmp/lbh.zip')(再手动解压到 Packages 目录) - 关键细节:插件必须放在
Packages/下一级,不能嵌套在子文件夹里;否则 Sublime 根本加载不到语法定义
@push('scripts') 这类嵌套结构,高亮可能只到第一层。真要深度语义分析,得换 PHPStorm + Laravel Idea 插件——不过对日常模板编写,只要 @ 指令和 {{ }} 能稳稳区分,就足够了。











