装完GLSL插件后.frag文件仍为白屏,是因Sublime未手动绑定语法:需右下角点击语言名→Open all with current extension as…→选含“GLSL”的项;vUv等Three.js变量不补全是正常设计,非插件缺陷;highlight_line生效需配色方案含lineHighlight规则。

装完GLSL插件,.frag 文件还是白的?不是插件没生效,是 Sublime 根本没把它当 GLSL 文件处理——语法绑定这一步必须手动做,跳过就等于白装。
GLSL 插件装了但 .frag/.vert 仍是 Plain Text
Sublime 默认不把常见着色器后缀映射到 GLSL 语法。插件只提供高亮能力,不自动注册文件关联。
- 打开一个
.frag文件,右下角显示Plain Text或误判为ShellScript,就说明绑定失败 - 立刻点击右下角语言名 →
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 在 GLSL 里不补全?这不是 bug,是设计如此
vUv、vNormal、modelViewMatrix 是 Three.js 运行时注入的变量,不属于 GLSL 标准语言范畴。任何标准 GLSL 插件都不会识别它们。
- 插件只认
gl_Position、gl_FragColor等 OpenGL 内建变量,以及vec2/mat4等类型关键字 - 想快速输入,可在
Packages/User/下新建vUv.sublime-snippet,内容含<tabTrigger>vuv</tabTrigger>和<content>vUv</content> - 顶部加伪注释如
// @fragment: cameraPosition是 hack,可能干扰预处理器或编译器,不推荐 - 真要查变量,用
SpectorJS在浏览器里 inspect 实际传入的uniform/varying,比编辑器补全更准
"highlight_line": true 开了但当前行没颜色?配色方案缺 lineHighlight 规则
这个设置只是开关,真正决定颜色的是你当前使用的 .sublime-color-scheme 文件里有没有定义 lineHighlight。
- 很多轻量主题甚至默认主题都缺这条规则,结果就是“开了等于没开”
- 验证方法:打开任意代码文件,按
Ctrl+Shift+P输入Developer: Show Scope Name,光标放某行中间,看输出里有没有region.line—— 没有就说明主题缺失 - 解决方式:换主题(比如
Monokai或Brogrammer),或手动编辑配色方案文件,加上"lineHighlight": { "foreground": "" }类定义
最常被忽略的是:外置着色器文件修改后浏览器不刷新,大概率不是 Sublime 问题,而是 THREE.FileLoader 缓存或加载时机不对——得清浏览器缓存,或确保服务端没启用强缓存头。


















