Calva需JDK 8+和Leiningen,Mac用brew安装,Windows需配置PATH;禁用Clojure插件;用Jack-in启动REPL;求值推荐Cmd+Enter内联显示。

确认Java和Leiningen已就位
Calva 无法绕过 JVM 启动 REPL,所以 java -version 必须输出 JDK 8+(推荐 JDK 11 或 17),lein -v 必须能打印版本号。Mac 用户用 brew install leiningen 最稳;Windows 用户注意把 lein.bat 所在目录加进 PATH,且确保该路径下没有同名的 lein shell 脚本干扰。
- 常见错误:终端里
lein可用,但 VSCode 集成终端报 “command not found”——这是 VSCode 没读取 shell 的PATH,重启 VSCode 或从命令行用code .启动项目目录 - Leiningen 初始化项目必须在空目录执行:
lein new app my-project;若目录已有.git或其他文件,lein会静默失败或创建不完整结构 - 别急着改
project.clj里的:plugins——Calva 自带 nREPL 连接能力,不需要手动配cider-nrepl,加了反而可能触发中间件冲突
只装 Calva,别碰“Clojure”插件
VSCode 扩展市场里那个名字就叫 Clojure 的插件(作者 avli)只做基础语法高亮,和 Calva 功能重叠且不兼容。装了它,Calva 的括号匹配、求值提示、跳转定义等功能大概率失效。官方文档和社区实践都明确建议:卸载 Clojure,只留 Calva。
- 安装后无需额外配置即可识别
project.clj并启动 REPL,但首次启动可能卡在 “Starting nREPL server…”——检查终端是否被杀掉、project.clj里:dependencies是否有非法字符(比如中文冒号) - 如果项目根目录同时存在
project.clj和deps.edn,Calva 默认优先用 Leiningen;想强制走 CLI,得删掉project.clj或重命名 - Mac M 系列用户若遇到
Could not reserve enough space for 2097152KB object heap,需在.vscode/settings.json里加:"calva.jvmArgs": ["-Xmx1g"]
用 Jack-in 启动 REPL,别手敲命令
打开项目根目录(含 project.clj)后,按 Ctrl+Shift+P(Win/Linux)或 Cmd+Shift+P(Mac),输入 Calva: Jack-in 并回车。这个操作会自动调用 lein repl,拉起带完整依赖的 REPL,并把当前项目上下文注入进去。手动在集成终端里敲 lein repl 启动的,Calva 不认,也无法实现代码求值跳转。
- Jack-in 成功后,右下角状态栏会出现
Calva REPL标识,底部终端显示类似my-project.core=>的提示符,不是user=> - 如果卡在 “Connecting to nREPL…”,先检查
project.clj里:profiles是否误删了:repl配置块(Leiningen 2.9+ 默认自带,一般不用动) - 想加载特定 profile(如
:dev),Jack-in 时选 “Leiningen with aliases”,再输入dev;别在project.clj里硬编码:repl-options {:init-ns …},容易和 Calva 冲突
求值与调试别依赖 Ctrl+B
VSCode 默认 Ctrl+B 是切换侧边栏,绑定到 Calva 的 “Eval current form” 后,每次求值结果会追加在输出面板,不会清屏——这在连续调试时极易混淆上一次的结果。更可靠的方式是:光标停在表达式内,按 Alt+Enter(Win/Linux)或 Cmd+Enter(Mac),结果以内联提示(inline result)形式直接显示在代码下方,一目了然。
- 加载整个文件用
Ctrl+Alt+C→Ctrl+Alt+L,不是单个快捷键;按错顺序(比如先 L 后 C)会没反应 - 如果内联结果不出现,检查设置里是否关了
calva.showResultInline(默认 true) - REPL 终端里手动输代码没问题,但一旦用了
Ctrl+Alt+C加载文件,后续所有求值都以该文件的命名空间为上下文——别在user命名空间里试(require 'my-project.core),直接切到对应文件再求值
lein repl 在终端里能跑通,再让 Calva 接管。


















