sublime text 需通过 sublimerepl 插件配合 leiningen 实现 clojure 交互式 repl,仅靠 build system 无法热重载;必须确保 lein 可执行、sublimerepl 正确启用 clojure 支持,并绑定快捷键(如 alt+enter)发送代码,辅以 parinfer 管理括号。

Sublime Text 本身不内置 Clojure 支持,必须靠插件 + 外部工具链协同工作;SublimeREPL 是唯一能真正实现「交互式 REPL」的路径,仅靠自定义 Build System 只能单次编译运行,无法 eval 当前行、发送表达式、保持状态——这点很多人一开始没意识到,结果卡在“为什么不能热重载函数”上。
确认 Leiningen 已就绪且可命令行调用
这是整个流程的前提,SublimeREPL 启动 Clojure 会话时直接调用 lein repl。不是 clj(Clojure CLI 工具),也不是 jar 包直跑——SublimeREPL 的 Clojure 配置硬编码依赖 lein。
验证方式:终端执行
lein repl
看到 user=> 提示符即成功。若报 'lein' is not recognized,需检查 PATH 是否包含 lein 脚本所在目录(Windows 下通常是 %USERPROFILE%\bin,macOS/Linux 常为 ~/bin 或 /usr/local/bin)。
- 不要用
clj -Sdeps '{:deps {org.clojure/clojure {:mvn/version "1.12.0"}}}' -r替代,SublimeREPL不识别该命令格式 - Leiningen 安装后首次运行会下载依赖,耗时较长,但只需一次;后续
SublimeREPL启动也需等待几秒,属正常现象 - Windows 用户注意:确保
lein.bat可执行,且没有被杀毒软件拦截(曾有用户因 Windows Defender 阻止导致SublimeREPL启动黑屏无响应)
安装 SublimeREPL 并启用 Clojure 支持
SublimeREPL 是核心插件,它把 REPL 嵌入 Sublime 窗口,并提供菜单/命令面板入口。Clojure 支持不是默认开启的——它藏在插件配置里,需要手动触发。
安装后重启 Sublime Text(部分版本不重启会导致命令不可见),然后:
- 按
Ctrl+Shift+P(macOS 为Cmd+Shift+P),输入SublimeREPL: Clojure,应出现至少两项:Run Clojure REPL和Send Code to REPL - 若无此选项,说明插件未正确加载 Clojure 子配置;前往
Preferences → Package Settings → SublimeREPL → Settings – User,确认内容为空或仅含{}(勿复制网上过时的 JSON 配置,新版SublimeREPL自动探测lein) - 首次点击
Run Clojure REPL会新开一个标签页,显示启动日志,最后停在user=>;这个窗口就是 REPL 会话,所有发送的代码都在这里执行并保留上下文
绑定快捷键让发送代码更顺手
默认没有快捷键绑定 Send Code to REPL,每次都要进命令面板太慢。建议绑定到 Ctrl+Enter(避免和 Sublime 默认的换行冲突)或 Alt+Enter。
打开 Preferences → Key Bindings,在右侧用户键位文件中添加:
[{"keys": ["alt+enter"], "command": "repl_transfer_current", "args": {"scope": "block"}}, {"keys": ["alt+shift+enter"], "command": "repl_transfer_current", "args": {"scope": "function"}}]
-
scope: "block"发送光标所在 S 表达式(括号匹配块),适合发函数定义或 let 绑定 -
scope: "function"发送整个 defn/defmacro 形式,适合重载函数 - 别用
Ctrl+B:那是 Build System 的快捷键,和 REPL 无关;误按会触发编译而非求值
语法高亮与括号管理必须配 Parinfer
Clojure 是括号语言,手动维护 () 层级极易出错。Parinfer 插件能实时根据缩进自动调整括号,是 Clojure 开发事实标准。
安装后无需额外配置,但要注意:
- 新建
.clj文件后,右下角状态栏应显示Clojure语法;若显示Plain text,点它手动选Clojure,或通过Ctrl+Shift+P → Set Syntax: Clojure -
Parinfer默认启用indent mode,即你敲空格缩进,它自动补/删括号;如需临时禁用,按Ctrl+Alt+P切换模式 - 别同时开
Auto Indent和Parinfer:Sublime 原生缩进逻辑会和 Parinfer 冲突,导致括号跳变;关闭方法:Preferences → Settings,删掉或注释掉"auto_indent": true
最易忽略的一点:REPL 窗口里的代码不会被 Parinfer 管理——它只作用于编辑器中的 .clj 文件。所以函数写错时,别在 REPL 窗口里改,要回到源文件改,再 Alt+Enter 重发。











