calva是vscode中clojure开发唯一开箱即用的完整方案,但必须先安装并验证clojure或lein命令在vscode终端中可用,否则jack-in会卡在“connecting…”;需卸载其他clojure插件,仅保留calva,并重启vscode。

Calva 能开箱即用,但前提是你的系统里真有能跑起来的 Clojure 运行时——不是插件装了就行,clojure 或 lein 命令必须在 VSCode 内置终端里敲得通,否则 Jack-in 一定卡在 “Connecting to nREPL…”。
确认 Java 和构建工具已就位
Calva 启动 REPL 必须调用 JVM 工具链,所以两件事缺一不可:
-
java -version输出 JDK 8+(推荐 JDK 11 或 17),Mac M 系列若报Could not reserve enough space for 2097152KB object heap,得在.vscode/settings.json里加:"calva.jvmArgs": ["-Xmx1g"] -
clojure -Sversion或lein -v能正常返回版本号;macOS 用brew install clojure/tools/clojure或brew install leiningen;Windows 用户务必把lein.bat所在目录加进系统 PATH,且确认没有同名leinshell脚本干扰
常见坑:终端里命令可用,VSCode 集成终端却报 command not found——这是 VSCode 没读取 shell 的 PATH,重启 VSCode 或直接从终端执行 code . 打开项目。
只装 Calva,卸载所有其他 Clojure 插件
VSCode 扩展市场里那个名字就叫 Clojure(作者 avli)或 Clojure-Kit 的插件,只会和 Calva 冲突。它们不提供 REPL 连接能力,却会劫持括号匹配、求值快捷键、跳转定义等功能,导致 Cmd+Enter 求值失败、括号错位、甚至编辑器卡死。
官方实践和社区共识都明确:只留 Calva(作者 BetterThanTomorrow),装完必须重启 VSCode,否则快捷键(如 Ctrl+Alt+C Ctrl+Alt+J)不生效。
项目结构决定 Calva 怎么启动 REPL
Calva 不靠配置文件猜项目类型,而是看根目录下有什么:
- 同时存在
project.clj和deps.edn?默认走 Leiningen,想强制用 CLI 得删掉或重命名project.clj - 只有
deps.edn?Calva 自动调用clojure -M启动 REPL;手动建的deps.edn至少要有:{:deps {org.clojure/clojure {:mvn/version "1.12.0"}}} - 只有
project.clj?Jack-in 时选 “Leiningen”,别手敲lein repl——手动启的 REPL Calva 不认,无法跳转、求值、注入类路径
新建项目别用 lein new app my-project 在非空目录下执行,它会静默失败;Clojure CLI 推荐用:clojure -Tnew app :name myproject,生成标准结构(含 src/ 和 deps.edn)。
Jack-in 成功后,状态栏和提示符是关键信号
Jack-in 完成不是看终端有没有输出,而是盯两个地方:
- 右下角状态栏出现
Calva REPL标识(不是灰色文字,是带连接状态的活跃按钮) - 底部集成终端显示类似
my-project.core=>的提示符,而不是user=>;如果还是user=>,说明项目上下文没加载进去,Alt+Enter求值会报Unable to resolve symbol
如果卡在 “Starting nREPL server…”,先检查 project.clj 里 :dependencies 是否有非法字符(比如中文冒号),或 :profiles 是否误删了默认的 :repl 块(Leiningen 2.9+ 自带,一般不用动)。











