不能。sublime text 本身无 clojure 运行时,需依赖系统已安装的 clojure cli(java 17+)和 conjure 插件连接 nrepl 才能实现完整开发体验,build system 仅适合一次性脚本执行。

Sublime Text 能不能直接运行 Clojure 代码
不能。Sublime Text 本身只是文本编辑器,没有 Clojure 运行时,也**不自带 REPL 或编译器集成**。所谓“配置 Clojure 环境”,本质是让 Sublime 能调用外部工具(比如 clojure CLI 或 lein)来执行、求值或启动 REPL——它只是个“前端界面”。
常见错误现象:Unable to find command: clojure、点击运行后无响应、java.lang.ClassNotFoundException: clojure.main。根本原因不是 Sublime 配置错了,而是系统 PATH 里压根没装好 clojure CLI,或者没配对 Java 版本。
- 必须先在终端确认
clojure -M -e "(+ 1 2)"能输出3 - Java 版本需为 17+(
clojureCLI 1.11+ 强制要求),java -version得看到17.或更高 - 别试图用 Sublime 自带的 Build System 直接跑
.clj文件——它不解析 ns、不加载依赖,只会报错
用 Conjure 插件连上 nREPL 才算真正可用
Conjure 是目前 Sublime 上唯一稳定支持 Clojure 的插件,它通过 socket 连接本地 nREPL 服务,实现求值、跳转定义、文档查看等 IDE 级功能。不装 Conjure,就等于没 Clojure 开发体验。
使用场景:写完一个函数想立刻试结果、查 map 的 doc、把光标停在 (defn foo [] ...) 上按快捷键载入定义。
- 安装前确保已装好
clojureCLI 和rlwrap(macOS/Linux)或winpty(Windows) - 启动 nREPL:在项目根目录运行
clojure -M:nrepl(前提是deps.edn里有:nrepl别名) - Conjure 默认连
localhost:5555,如果端口被占,改conjure.edn里的:host和:port - 别用
lein repl启动——Conjure 对 lein 的 nREPL 支持弱,容易断连
Build System 只适合一次性脚本,别指望它替代 REPL
Sublime 的 Build System 可以封装命令,比如一键执行当前文件。但它和 REPL 完全是两回事:没有状态、不共享命名空间、无法增量求值。
性能影响:每次运行都新建 JVM 进程,冷启动慢(2–5 秒),不适合频繁试代码;兼容性差,deps.edn 里的 alias、local/root deps 不会被自动识别。
- Build System 的
cmd字段建议写成:["clojure", "-M", "-m", "$file_base_name"](要求文件名和 ns 名一致) - 如果项目用
:extra-deps,得手动加-Sdeps参数,否则找不到依赖 - Windows 用户注意:Sublime Build 的 shell 环境可能不读取用户 profile,
clojure命令要写绝对路径,比如"C:/Users/xxx/.clojure/tools/clojure.exe"
Conjure 的 eval 键绑定和光标位置强相关
Conjure 的求值行为高度依赖光标所在位置,不是“选中再按 Ctrl+Enter”那种通用逻辑。很多问题其实卡在光标没停对地方。
容易踩的坑:Ctrl+Enter 没反应、只求值了第一行、报错 No forms to evaluate。
- 光标在括号内(比如
(defn foo [] |)的竖线处),Ctrl+Enter会求值整个defn表达式 - 光标在顶层表达式末尾(
(println "hi")|),才会求值这一行;停在中间((println |"hi"))会报错 - 想求值整个文件,得把光标移到文件最开头(第 0 行第 0 列),再按
Ctrl+Shift+Enter - 如果用了
ns切换命名空间,但没显式(require 'xxx),Conjure 不会自动帮你加载,求值会失败
clojure CLI → 项目有可工作的 deps.edn → 手动启 nREPL → Conjure 连上去。任何一环断掉,都会表现为“没反应”或“报奇怪错”,而不是配置项漏填。










