.rkt文件显示“Plain Text”是因Sublime未识别为Racket语法;需手动设置语法为Racket、安装官方语法包、绑定.rkt后缀,并配置正确构建系统及path路径。

为什么 .rkt 文件打开显示 “Plain Text”?
这不是插件没装,是 Sublime 没把文件识别为 Racket 代码——右下角显示 “Plain Text”,说明 source.racket 这个语法作用域根本没加载成功。
按 Ctrl+Shift+P(Win/Linux)或 Cmd+Shift+P(macOS),输入 Set Syntax: Racket 并回车;如果列表里没有 Racket,说明没装官方语法包(别装 R-Box 或 Scheme Complete,它们会劫持 .rkt 后缀)。
装完后打开一个 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),也不继承 GUI 环境变量。终端里 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 构建系统怎么写才真正生效?
默认 {"cmd": ["racket", "$file"]} 看似简单,但跨平台兼容性差,且错误无法点击跳转。关键字段必须对齐当前文件的语法 scope 和实际运行需求。
保存为 Racket.sublime-build(必须以这个后缀结尾),内容示例:
{
"cmd": ["racket", "$file"],
"file_regex": "^(.*?):([0-9]+):([0-9]+): (.*)$",
"selector": "source.racket",
"working_dir": "$file_path"
}
-
"selector"必须匹配你右下角显示的语法名;如果显示 “Scheme”,就得改成source.scheme -
"file_regex"是 Racket 默认报错格式的正则,漏了它,错误就只能看不能点 -
"working_dir": "$file_path"确保require或相对路径引用能正确解析
容易被忽略的三个硬性前提
配置失败的绝大多数情况,不是插件没装对,而是三件事没同时满足:
-
.rkt文件右下角必须显示 “Racket”(即source.racketscope 加载成功) - 构建系统中的
"cmd"或"path"必须指向一个真实可执行的racket二进制文件(which racket或where racket可验证) -
"file_regex"的捕获组顺序必须和 Racket 实际报错格式完全一致——比如 Racket v8.14 报错是file.rkt:12:3: expected identifier,正则里第 2 组是行号、第 3 组是列号,不能颠倒
少一个,就卡在“Plain Text”或 Ctrl+B 无响应上,重启 Sublime 也救不了。


















