sublimerepl 启动后只显示 >>> 是因误用“sublimerepl: clojure”(启动空 repl),而非“sublimerepl: clojure - run current file”(执行已保存的 .clj 文件);后者要求文件已保存、后缀为 .clj,且 id 必须为 "repl_clojure_run"。

SublimeREPL 启动后不执行 .clj 文件,只显示 >>>
这是最典型的误操作:你点的是 SublimeREPL: Clojure,它启动的是一个空的 Clojure REPL 进程,和当前文件完全无关。它不会自动加载、不会读取、更不会执行你正在编辑的 .clj 文件。
真正要运行当前文件,必须用 SublimeREPL: Clojure - Run current file 命令——注意后缀里的 - Run current file。这个命令会把已保存的文件内容整段发给正在运行的 REPL 进程。
- 文件必须已保存,且扩展名是
.clj;未保存或后缀不对,命令会静默失败,不报错也不提示 - 快捷键绑定时别写错 ID:
"id": "repl_clojure_run"才是运行文件,"id": "repl_clojure"是启动空 REPL - 如果没看到
- Run current file选项,说明 SublimeREPL 的 Clojure 配置没加载成功,检查插件是否启用、Packages/SublimeREPL/config/Clojure/目录是否存在
clj.bat 路径配置错误导致 Build System 报 [Error 2]
网上常见错误配置:"cmd": "clj $file" —— 这种写法依赖系统 PATH 查找 clj.bat,Windows 下极易失败,尤其当路径含空格或中文时,直接触发 [Error 2](系统找不到指定文件)。
正确做法是使用绝对路径 + 数组语法,确保 Sublime 精确调用:
{
"cmd": ["D:/tools/clojure-1.12.0/clj.bat", "$file"],
"selector": "source.clj",
"working_dir": "$file_path"
}
-
"working_dir": "$file_path"强制工作目录为当前文件所在目录,避免require或load-file找不到依赖 - 路径中所有反斜杠必须写成正斜杠
/或双反斜杠\,否则 JSON 解析失败 - 确认
clj.bat文件真实存在,且能从 CMD 中直接运行(测试:打开 cmd,输入完整路径回车,应进入 REPL)
Clojure 语法高亮与括号匹配失效
默认 Sublime 不识别 .clj 后缀,也不会应用 Lisp 类语法规则,导致括号不配对、关键词无高亮、缩进混乱。
必须手动关联语法和启用 Parinfer(关键):
- 打开
.clj文件 →View→Syntax→Open all with current extension as...→ 选Clojure(如无此选项,先安装ClojureSyntax插件) - 安装
Parinfer插件后,它会自动监听source.clj作用域,管理括号结构;若未生效,检查Preferences → Package Settings → Parinfer → Settings中"enabled_for": ["source.clj"]是否包含 - 强制设为 2 空格缩进:在
Preferences → Settings – Syntax Specific(确保当前是.clj文件)中添加:"tab_size": 2, "translate_tabs_to_spaces": true
Leiningen 项目无法在 REPL 中 require 自定义命名空间
SublimeREPL 默认启动的是裸 Clojure(clojure.main),不是 Leiningen 启动的 REPL。因此 (require 'my.project.core) 会报 FileNotFoundException —— 它根本没加载你的 src/ 和 project.clj。
要支持 Leiningen 项目,必须改用 Leiningen 启动 REPL,并让 SublimeREPL 接管它的 stdin/stdout:
- 先确保
lein在 PATH 中可用(CMD 输入lein version应返回版本号) - 修改
Packages/SublimeREPL/config/Clojure/Main.sublime-menu中的repl_clojure条目:"cmd": ["lein", "repl"] - 重启 Sublime,再运行
SublimeREPL: Clojure,此时启动的就是 Leiningen 管理的完整 classpath - 注意:Leiningen REPL 启动较慢,首次运行需耐心等待,不要反复点击
Clojure 的交互开发强依赖进程上下文一致性——REPL 进程的 classpath、工作目录、编码设置,三者缺一不可。很多人卡在“能启动但 require 不了”,问题往往出在用了裸 clj.bat 却想加载 Leiningen 项目,或者工作目录没设对导致资源路径错乱。











