sublime text 配置 clojure 环境需按序安装 sublimerepl、clojuresyntax(或 clojure)、parinfer 三插件并重启,确保 leiningen 已正确配置于 path 且 lein repl 可运行;启动 repl 后需等待初始化完成,配合 2 空格缩进与 parinfer 自动括号管理,方可实现代码发送与执行。

Sublime Text 能跑 Clojure REPL,但不是装完插件点一下就出 =>——它要等 Leiningen 启动、JVM 加载、Clojure 初始化,首次启动常卡住 10–30 秒,别关窗口,盯着状态栏看“Loading…”变成“Ready”。
装对插件且顺序不能乱
必须按顺序装三个插件,缺一不可,且安装后需重启 Sublime Text:
-
SublimeREPL:提供 REPL 容器,不装它,后面全白搭 -
ClojureSyntax或Clojure(二者选一):负责.clj文件高亮和关键词识别;ClojureSyntax更轻量,Clojure带少量补全,但容易和 Parinfer 冲突 -
Parinfer:不是可选,是刚需——Clojure 靠括号结构表达逻辑,手动配平极易出错;它会根据缩进自动调整括号,但要求你用 2 空格缩进(不是 Tab)
安装方式统一:Ctrl+Shift+P → 输入 Package Control: Install Package → 逐个搜名字回车。装完不重启,SublimeREPL: Clojure 命令不会出现在命令面板里。
Leiningen 是硬门槛,不是“有 Java 就行”
SublimeREPL 的 Clojure 支持只认 lein 命令,不接受裸 java -jar clojure-*.jar。常见失败现象:
- 命令面板里搜不到
SublimeREPL: Clojure→lein没进 PATH,或没装 - 点了之后弹窗报
Unable to find lein→ Windows 用户注意:PowerShell 和 CMD 的 PATH 可能不同,Sublime 默认读 CMD 环境变量 - 启动后卡在
Downloading...→ 是 Leiningen 在拉取依赖,不是插件卡死;检查网络或手动运行lein repl看是否同样卡住
验证方式:终端里执行 lein --version 必须返回版本号;再执行 lein repl 应能进入交互式环境并显示 => 提示符。
启动 Clojure REPL 的正确姿势
别指望 Ctrl+Enter 直接跑当前文件——Clojure REPL 启动是独立进程,和编辑区代码无自动绑定:
- 先手动启动:Ctrl+Shift+P → 输入
SublimeREPL: Clojure→ 回车 → 等状态栏变绿、新标签页出现=> - 此时才会在菜单栏
Tools → SublimeREPL → Clojure下看到子项,包括Send Code to REPL类命令 - 发送代码前,光标必须落在一个完整 S-表达式内(比如
(defn hello [] (println "hi"))的任意位置),否则只会发半截,REPL 报java.lang.RuntimeException: EOF while reading - 想运行整个文件?得先保存为
.clj,再 Ctrl+Shift+P →SublimeREPL: Clojure - Eval File;不保存或后缀不对,命令静默失效
Parinfer + 缩进 = 生存线,不是锦上添花
一旦关闭 Parinfer 或缩进混乱,Clojure 代码几乎无法维护:
- 右下角必须显示
Clojure(不是Lisp或Plain Text),否则 Parinfer 不生效,Ctrl+Enter发送时括号错位 - 缩进必须是 2 空格:右下角点击
TAB SIZE→ 选Convert Indentation to Spaces→ 再设Tab Width: 2 - 禁用
detect_indentation:打开Preferences → Settings – Syntax Specific(确保右下角是Clojure),加一行"detect_indentation": false,否则粘贴代码后缩进被重置,Parinfer 跟着错乱 - 别手敲括号:Parinfer 会自动补全
)和],你只管缩进;多敲一个)它会立刻删掉,这是正常行为
最易忽略的点:Parinfer 的“智能”依赖于光标位置和当前缩进层级,如果你把光标停在注释行或空行,Ctrl+Enter 什么都不会发——它只处理有效 S-表达式,这点和 Python 的 SublimeREPL 完全不同。











