glsl插件安装后.frag文件仍显示为plain text,因sublime未绑定后缀;需手动通过右下角菜单将.frag等扩展名关联至glsl语法,且fs、vs等也须单独绑定。

GLSL 插件装完.frag 文件还是白的?不是插件坏了,是 Sublime 根本没把它当 GLSL 处理——后缀没绑定,高亮就等于没开。
右下角显示 Plain Text 怎么办
Sublime 不会自动把 .frag、.vert、.glsl、.fs、.vs 等后缀关联到 GLSL 语法。装完插件只加了能力,不手动绑定就无任何效果。
- 打开一个
.frag文件,看右下角显示的是不是Plain Text或误判成ShellScript(尤其.s后缀常被抢注) - 立刻点击右下角语言名 → 选
Open all with current extension as…→ 找到名称含GLSL的项(不是OpenGL Shading Language这种旧名,以你安装后实际列出为准) - 如果菜单里压根没有
GLSL选项:按Ctrl+Shift+P输入Package Control: List Packages,搜GLSL确认是否真已安装成功 -
.fs、.vs、.geom等扩展名也得单独绑定,不能只绑.frag - 绑定后新建同后缀文件会自动匹配,但已打开的旧文件需手动点右下角重新选一次语法
vUv、cameraPosition 这些变量为什么不补全
这不是 bug,是设计如此。GLSL 插件只遵循 OpenGL 官方规范,而 vUv、vNormal、cameraPosition 是 Three.js 在运行时注入的变量,不属于 GLSL 语言本身。
- 任何标准 GLSL 插件都不会为它们提供补全或高亮
- 别指望靠插件“修复”这个,补全是静态分析,而这些变量是动态注入的
- 可行替代方案:用 Sublime 的
snippets功能自建常用变量片段,例如新建vUv.sublime-snippet,内容为<content>vUv</content><tabtrigger>vuv</tabtrigger>,保存到Packages/User/目录下 - 顶部加伪注释如
// @fragment: cameraPosition能骗部分解析器识别 scope,但可能干扰真实编译,慎用 - 更可靠的做法:放弃编辑器补全,改用
SpectorJS在浏览器中实时 inspect 着色器输入变量,它看到的才是运行时真实上下文
"highlight_line": true 开了但当前行没颜色
启用 "highlight_line": true 只是打开开关,真正决定颜色的是你当前 .sublime-color-scheme 文件里有没有 lineHighlight 这条规则。很多主题(尤其是轻量级或自定义主题)根本没定义它。
- 验证方法:打开任意代码文件,按
Ctrl+Shift+P输入Developer: Show Scope Name,把光标放在某一行中间,看输出里有没有region.line—— 没有就说明主题缺失该规则 - 解决方式:用
Ctrl+Shift+P输入Preferences: Color Scheme打开当前主题文件,在rules数组里添加一条:{"scope": "region.line", "background": "#2f3337"}(颜色值按需调整) - 注意:修改前先备份原主题文件,避免升级覆盖
最常被忽略的一点是:GLSL 插件和 GLSL Viewer 是两套东西。前者管语法,后者管预览;前者绑定后缀,后者依赖 OpenGL 上下文和外部 glslViewer 程序。想边写边看效果,这两者都得配对到位,缺一不可。











