右下角显示 Plain Text 说明大纲解析已失效,因语法包未被识别导致 scope 缺失;需检查语法绑定冲突、tmLanguage 文件完整性、ignored_packages 设置及 syntax-specific 配置干扰。

右下角显示 Plain Text 就说明大纲解析已失效
Sublime Text 的代码大纲(即侧边栏的函数/类跳转列表、Ctrl+R 快速定位)依赖语法包提供的 scope 定义,而不是文件扩展名本身。一旦右下角状态栏显示 Plain Text,就代表当前文件没被任何语法包识别——大纲自然为空或仅显示“Symbols not found”。这不是插件没装,而是语法链断了。
检查 syntax_definition 是否被覆盖或冲突
多套语法包(比如同时装了 JavaScript、Babel、ES6 Syntax)可能注册了相同的 .js 扩展名,但只有一套能真正生效。Sublime 按加载顺序决定最终绑定,后加载的会覆盖前一个。
- 打开命令面板
Ctrl+Shift+P,输入Set Syntax: JavaScript,观察是否真切换成功(右下角变JavaScript) - 再执行
Developer: Show Scope Name(光标放在function或class关键字上),若输出是source.js才算正常;若输出source.js.jsx或source.babel,说明实际加载的是另一套语法 - 查看
Packages/User/Preferences.sublime-settings,确认没有误写"syntax_override"覆盖了所有.js文件到某个非标准语法
验证 .tmLanguage 文件是否完整且未被 ignored_packages 屏蔽
大纲解析需要语法包里的 .tmLanguage 文件包含 symbol_list 或 meta.function 等 scope 声明。如果该文件损坏、路径错位,或整个包被禁用,大纲就无法生成。
- 点击
Preferences → Browse Packages…,进入对应语言目录(如JavaScript/或Babel/),确认存在JavaScript.tmLanguage(或ES6.tmLanguage)且文件大小 >1KB - 打开
Preferences → Settings – User,检查"ignored_packages"列表里是否误加了"JavaScript"、"Babel"等名称(注意大小写和空格) - 临时清空
ignored_packages,重启 Sublime,再测试大纲是否恢复——若恢复,说明某包被误禁
避免 syntax-specific 设置干扰全局大纲行为
某些插件(如 Vue Syntax Highlight 或自定义 .sublime-syntax)会在 Packages/User/ 下创建语法专用设置文件(如 Vue Component.sublime-settings),若其中写了 "symbol_list": [] 或错误的 "fold_by_level",会直接压制大纲解析逻辑。
- 进
Packages/User/目录,查找所有以.sublime-settings结尾的文件,逐个打开,删掉含symbol_list、outline、fold_by_level的行 - 特别留意
XML.sublime-settings或HTML.sublime-settings,它们常被第三方插件修改,导致.vue或.html文件大纲消失 - 改完后重启 Sublime,不需重载语法,大纲会立刻响应
真正麻烦的不是语法包装得多,而是它们之间对 scope 的定义互相覆盖又不兼容——比如 Babel 把 async function 标为 keyword.control.js,而默认 JavaScript 包期待的是 storage.type.js,大纲解析器认不出,就跳过这一行。这种细节不会报错,只会让函数列表变短、Ctrl+R 搜索不到目标。


















