Ctrl+Enter没反应、括号不配对、defn不补全,根本原因是Clojure环境未真正连上REPL;语法插件仅负责高亮,运行需ClojureSublimed或SublimeREPL连接本地nREPL,且必须打开项目文件夹、配置4空格缩进、禁用tab、确保deps.edn存在并正确设置clojure_cmd路径。

Ctrl+Enter 没反应、括号不配对、defn 不补全——不是 Sublime 有问题,是 Clojure 环境没真正连上 REPL,语法插件只管高亮,不负责运行。
装对 Clojure 插件,别被 Parinfer 带偏
Sublime 自身零 Clojure 支持,必须靠插件补语法高亮和括号逻辑。最轻量可靠的组合是:Clojure(作者 tonyjwilliams) + SublimeREPL 或 ClojureSublimed。
Parinfer 虽然能自动调括号,但新手常因它重排代码导致 defn 参数错位、ns 加载失败;它也不兼容多数 LSP 行为。除非你明确需要“缩进即结构”工作流,否则先不用。
- 安装时打开命令面板
Ctrl+Shift+P→ 输入Package Control: Install Package→ 搜Clojure,认准作者名,避开已弃用旧版 - 装完新建
.clj文件,右下角点 “Plain Text” → 选 “Clojure”,或手动Ctrl+Shift+P→Set Syntax: Clojure - 如果括号不 rainbow 高亮,关掉
BracketHighlighter类插件——Clojure插件自带该功能,冲突反而失效
运行 Clojure 不能靠 Build System
Tools → Build 是一次性脚本执行器,每次启动新 JVM,冷启慢、不读 deps.edn、无法 require/eval 当前命名空间。它跑得通 (println :ok),但写到第三行就卡住。
真交互式开发,必须走 REPL 连接:本地起一个常驻进程,再让 Sublime 把光标所在表达式发过去求值。
- 先确保终端能跑:
clj -M -e "(println :ok)"输出:ok,说明clojure-cli已装好(别只装 Leiningen) - 推荐用
ClojureSublimed:它直连 nREPL,支持Ctrl+Enter求值、Ctrl+Click跳转、Ctrl+Alt+D查 doc - 启动前,项目根目录要有
deps.edn(哪怕空的),且内容含{:paths ["src"]};否则插件识别不了项目结构,符号索引为空 - 启动命令是
Ctrl+Shift+P→ClojureSublimed: Start nREPL,不是靠快捷键自动连
缩进必须设死:4 空格、禁 tab、关 detect_indentation
Clojure 对缩进敏感到字节级。defn 后多一个 tab、let 绑定少换一行,clojure-lsp 可能不报错,但 REPL load-file 直接失败。
Sublime 默认开启 detect_indentation,一打开老文件就按第一个缩进猜规则,极易混入 tab —— 这是多数加载失败的根源。
- 打开
Preferences → Settings – Syntax Specific(确保右下角显示 Clojure 语法) - 填入这两行:
"tab_size": 4,"translate_tabs_to_spaces": true - 必须加第三行:
"detect_indentation": false,否则设置无效 - 已有混乱文件:全选 →
Ctrl+Shift+P→Convert Indentation to Spaces,再手动删残留→(tab 字符)
想用 LSP 补全和跳转?clojure-lsp 是唯一选择
Sublime 的 LSP 插件本身不带语言服务器,得自己搭 clojure-lsp。它是目前唯一稳定支持 deps.edn / project.clj / shadow-cljs 多种项目的 Clojure LSP 实现。
别试 clojure-lsp 以外的替代品——要么不维护,要么只支持 Leiningen,要么在 Windows 下 socket 连不上。
- 下载预编译二进制:去
clojure-lsp.github.io找对应平台最新版,解压后路径别含中文或空格 - 在
LSP.sublime-settings里配置:"clojure-lsp"的"command"指向你解压后的可执行文件 - 确保项目根目录有
deps.edn且clojure-lsp能读取它;首次启动会 indexing,状态栏显示LSP: clojure-lsp indexing…,等它变绿再操作 - 跳转失败常见原因:符号没被
require过。先在 REPL 里(require 'your.ns),再Ctrl+Click
最易忽略的点:所有插件行为都依赖「项目根目录」是否被正确打开。单开一个 .clj 文件,clojure-lsp 和 ClojureSublimed 都当纯文本处理——务必用 File → Open Folder 打开整个项目。

















