Sublime Text 不运行 Racket,仅调用系统 racket 工具;.rkt 文件显示“Plain Text”说明未正确加载 source.racket 语法 scope;Ctrl+Shift+P 设置语法为 Racket 并永久绑定后缀;Ctrl+B 报错需检查 racket 是否在 PATH 中,跨平台构建系统须匹配 scope、正则解析错误行且重启 Sublime 生效。

Sublime Text 本身不运行 Racket,它只调用你系统里已安装的 racket 命令行工具;配置失败的绝大多数情况,不是插件没装对,而是 racket 路径没被 Sublime 正确继承、语法 scope 没绑准、或构建系统 JSON 写错字段名。
为什么 .rkt 文件打开还是 Plain Text?
这不是插件没生效,是 Sublime 根本没把文件识别为 Racket 代码——右下角显示 “Plain Text” 就说明 source.racket 这个语法 scope 没加载成功。
- 先按
Ctrl+Shift+P(Win/Linux)或Cmd+Shift+P(macOS),输入Set Syntax: Racket并回车;如果列表里没有,说明没装官方Racket语法包(别装R-Box或Scheme Complete,它们会劫持后缀映射) - 装完后打开一个
test.rkt,确认右下角显示 “Racket”;只有这时selector才能匹配source.racket - 要永久绑定后缀,菜单 →
View → Syntax → Open all with current extension as…→ 选 “Racket”,然后编辑该语法配置,在{"extensions": ["rkt"]}里补上"scm"和"ss"
Ctrl+B 报错 command not found: racket 怎么办?
Sublime 不读你的 shell 配置文件(如 .zshrc 或 Windows 的 GUI PATH),即使终端里 racket -v 能输出版本号,Sublime 仍可能找不到它。
- 先在系统终端(不是 Sublime 内置终端)执行
racket -v,有输出才继续;Windows 用户安装时务必勾选 “Add to PATH” - macOS/Linux:用
which racket查路径(如/usr/local/bin/racket),在构建系统中通过"path"字段注入:"path": "/usr/local/bin:$PATH" - Windows:避免空格路径陷阱,直接写绝对路径:
"cmd": ["C:\Program Files\Racket\racket.exe", "$file"](注意双反斜杠) - 别依赖
"shell": true:它在 Windows 上易导致窗口一闪而过,在 macOS 上可能干扰 UTF-8 输出;真要 shell,改用"cmd": ["sh", "-c", "racket "$file""]
构建系统怎么写才真正生效?
一个能点击跳转错误行、支持中文路径、且跨平台稳定的 Racket.sublime-build 必须同时满足三个条件:命令可执行、scope 匹配当前语法、正则能解析 Racket 默认报错格式。
- 保存为
Racket.sublime-build(必须以这个后缀结尾),内容示例:
{
"cmd": ["racket", "$file"],
"file_regex": "^(.*?):([0-9]+):([0-9]+): (.*)$",
"selector": "source.racket",
"working_dir": "$file_path"
}
"selector" 必须和你右下角显示的语言一致:显示 “Racket” 就用 source.racket,显示 “Scheme” 就得改成 source.scheme
"file_regex" 是关键:Racket 错误默认格式是 file.rkt:12:5: expected identifier after keyword,这个正则才能让点击错误信息跳转到第 12 行第 5 列"shell": true 后仍一闪而过,说明 racket.exe 启动后立即退出——加一行 "quiet": false 并确保脚本末尾有 (read) 或 (sleep 5) 临时挂住窗口最容易被忽略的是:改完构建系统或 PATH 后,必须重启 Sublime Text——它不会热重载环境变量;而且 source.racket scope 是否生效,只看右下角是否显示 “Racket”,不看文件后缀或插件名。


















