装了GLSL插件但.frag文件仍是白的,因Sublime未手动绑定后缀到GLSL语法;需点击右下角Plain Text→Open all with current extension as…→选带GLSL字样的项,否则高亮不生效。

装了 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 - 已打开的旧文件需手动点右下角重新选一次语法,新建文件才会自动匹配
Three.js 的 vUv、cameraPosition 为啥不补全?
这些变量根本不在 GLSL 标准里,是 Three.js 运行时注入的,任何标准 GLSL 插件都不会识别它们。
- 插件只认
gl_Position、gl_FragColor这类 OpenGL 内建变量和vec2/mat4等类型关键字 - 想快速输入
vUv,可建vUv.sublime-snippet放在Packages/User/目录下,内容含<tabtrigger>vuv</tabtrigger> - 顶部加伪注释如
// @fragment: cameraPosition, diffuseColor是 hack,容易干扰编译器或预处理器,不推荐 - 真要查变量可用
SpectorJS在浏览器里 inspect 实际传入的 uniform/varying,比编辑器补全更准
"highlight_line": true 开了但当前行没颜色?
这个设置只是开关,真正决定颜色的是你当前配色方案(.sublime-color-scheme)里有没有定义 lineHighlight 规则。
- 很多轻量主题甚至默认主题都缺这条规则,结果就是“开了等于没开”
- 验证方法:打开任意代码文件,按
Ctrl+Shift+P输入Developer: Show Scope Name,光标放某行中间,看输出里有没有region.line—— 没有就说明主题缺失 - 若确认缺失,要么换主题(比如
Monokai或Brogrammer),要么手动编辑配色方案文件,加上"lineHighlight": { "foreground": "..." }这类定义
最常被忽略的是:外置着色器文件修改后浏览器不刷新,大概率不是 Sublime 问题,而是 THREE.FileLoader 缓存或加载时机不对,得清浏览器缓存或加时间戳参数;还有人以为装完插件就能跑 glslViewer 预览,其实那是另一个叫 GLSL Viewer 的独立插件,和语法高亮插件完全无关。

















