必须装language coffeescript插件、手动绑定.coffee语法为coffeescript、缩进严格设为2空格;三者缺一不可,否则文件识别为plain text,导致高亮失效、编译失败、保存不触发。

Sublime Text 里 CoffeeScript 编译失败、高亮失效、保存不触发——90% 是因为没装对插件、没手动绑定语法、缩进不是 2 空格这三件事漏做了一件。不存在“装完插件就自动好使”这回事。
必须装 Language CoffeeScript,不是 CoffeeScript
Package Control 搜索 “CoffeeScript”,第一个结果叫 CoffeeScript 的包是废弃的 tmLanguage 格式,ST3/ST4 根本不加载它。右下角永远显示 Plain Text,关键词全黑,缩进无分层,构建系统也找不到语法作用域。
- 按
Ctrl+Shift+P→ 输入Install Package→ 回车 → 等列表加载完 → 搜索并安装Language CoffeeScript(作者jashkenas,带Language-前缀) - 装完后打开任意
.coffee文件,右下角状态栏**必须显示CoffeeScript**;若仍是Plain Text,检查Packages/User/下是否残留CoffeeScript/或SublimeCoffeeScript/目录,有就直接删掉 - 别手动把
CoffeeScript.tmLanguage文件丢进Packages—— Sublime Text 3/4 已弃用该格式,会和Language CoffeeScript冲突
.coffee 文件右下角还是 Plain Text?手动绑定是唯一解法
Sublime 不靠后缀自动识别 .coffee 文件,尤其新建空文件或无 shebang 行时,识别率接近零。这不是 bug,是设计逻辑:它需要内容特征辅助判断(比如首行含 #!/usr/bin/env coffee)。
- 打开一个
.coffee文件,点击右下角状态栏(当前显示Plain Text)→ 选CoffeeScript - 再点菜单
View → Syntax → Open all with current extension as…→ 确认弹窗中.coffee已关联到CoffeeScript语法 - 新建文件后,右下角**不会继承上一个标签页的语法**,务必再点一次状态栏手动设
- 已有文件改完后需关闭重开,或按
Ctrl+Shift+P→ 输入Reload Syntax回车 - 进入
Preferences → Settings – Syntax Specific,确认里面没有"syntax"或"extensions"字段强行覆盖
缩进一动,高亮全丢、右下角跳回 Plain Text
CoffeeScript 解析器对空白符零容忍。混用 Tab 和空格、缩进宽度 ≠ 2,它就会直接放弃渲染:关键词变黑、缩进无颜色、甚至自动降级为 Plain Text。
- 菜单 →
View → Indentation → Convert Indentation to Spaces - 再点
Indentation → Tab Width: 2 - 在
Preferences → Settings(用户设置)中加一行:"detect_indentation": false,禁用自动探测 - 改完设置后,已打开的
.coffee文件需关闭再重开,或按Ctrl+Shift+P→ 输入Reload Syntax回车
构建系统里 coffee 命令找不到,和终端能跑无关
你在终端敲 coffee --version 成功,不代表 Sublime 能调到它。Sublime 构建系统启动时不继承 shell 的 PATH,环境变量是隔离的。
- Windows:CMD 里运行
where coffee,典型路径是C:UsersXXXAppDataRoaming pmcoffee.cmd(注意是.cmd,不是coffee) - macOS/Linux:终端运行
which coffee,常见路径如/usr/local/bin/coffee或/opt/homebrew/bin/coffee - 在 Sublime 控制台(
Ctrl+`)中运行import os; print(os.environ.get('PATH')),确认输出里包含上述路径 - 没找到?说明
npm install -g coffeescript没成功,或全局 bin 路径没加进系统环境变量(Windows 尤其容易漏) - 手动写
CoffeeScript.sublime-build时:
Windows 必须用"cmd": ["coffee.cmd", "-c", "$file"],不能写coffee;path字段填绝对路径,例如"path": "C:\Users\XXX\AppData\Roaming\npm"(双反斜杠)
macOS/Linux 用"cmd": ["coffee", "-c", "$file"];path填多个 bin 目录用冒号分隔:"path": "/usr/local/bin:/opt/homebrew/bin" - 加
"file_regex": "^([^:]+):([0-9]+):([0-9]+):(.*)$",能让编译错误跳转到对应行
真正麻烦的从来不是路径写错或者命令拼错,而是你改了缩进、换了插件、重装了 Node,却忘了重新绑定语法——Sublime 不会提醒你,它只是默默把文件当纯文本处理,连报错都懒得给你。











