vscode不执行lisp代码,需按方言选解释器:scheme用chez+code runner(.scm文件),common lisp用clisp(windows填绝对路径),racket用vscode-racket扩展,calva支持common lisp但不兼容slime。

VSCode 本身不执行任何 Lisp 代码,它只负责编辑和调度——真正跑 scheme 或 clisp 的,是你本地装好的解释器。配错解释器、路径、文件扩展名或命令参数,90% 的“运行失败”都源于此。
用 Code Runner 跑 Scheme:只认 .scm,且必须装 Chez
当前最稳的 Scheme 运行方案是 Chez Scheme + Code Runner,不是 mit-scheme,也不是 .ss 或 .rkt 文件。
-
Chez Scheme安装后,Windows 需把ta6nt(64 位线程版)所在目录加进系统PATH;macOS 直接brew install chezscheme即可 -
Code Runner的关键配置在settings.json中:"code-runner.executorMapByFileExtension": {".scm": "scheme $fileName"} - 文件必须保存为
.scm后缀;写#lang racket或(load "xxx.ss")会直接报错 - 别装
vscode-scheme:它只提供语法高亮,不连解释器,Ctrl+Alt+N会静默失败
Common Lisp 用 CLISP:路径填错就 spawn clisp ENOENT
CLISP 是跨平台最稳的 ANSI 实现,但 VSCode 扩展不会自动猜路径,尤其 Windows 下极易填错。
- Linux/macOS 可直接填
"lisp.clispPath": "clisp"(前提是clisp -q能进 REPL) - Windows 必须填绝对路径,例如
"lisp.clispPath": "C:\clisp\clisp.exe";填clisp或带空格的路径(如C:Program Files...)都会触发spawn clisp ENOENT - 首次打开
.lisp文件,右键 →Change Language Mode→ 选Common Lisp,否则快捷键无效 -
Ctrl+Enter发送当前 S-表达式,但如果光标停在注释行内,会发空行导致 REPL 卡住
Racket 不要用通用 Lisp 插件:#lang 会被当 CL 表达式求值
vscode-racket 是唯一能正确处理 #lang、模块导入和宏展开的扩展;用其他插件开 .rkt 文件,括号匹配错、REPL 输入乱、require 全报错。
- 安装后,在命令面板搜
Racket: Start Repl,它会自动找racket命令;找不到就手动设"racket.executablePath" - Windows 下若没加
racket.exe到PATH,路径示例:"racket.executablePath": "C:\Program Files\Racket\racket.exe" - 别用
Common Lisp扩展打开.rkt文件——它不认识#lang racket,所有宏和模块系统失效 -
Ctrl+Alt+Enter是重载整个文件,不是保存后自动运行;修改后必须手动触发
Calva 支持 Common Lisp,但不走 SLIME:别指望 slime-inspect
Calva 现已原生支持 Common Lisp,但它绕过了 SLIME 协议,用 Roswell 启动 SBCL,因此没有 slime-inspect 或深度对象探查能力。
- 必须先装
ros和sbcl:ros install sbcl,再验证ros run -- -q能进 REPL - Calva 启动 REPL 默认走
ros,不是直连sbcl.exe;设置里填sbcl路径无效 - Quicklisp 加载要靠
calva.replConnectSequences指定项目级load.lisp,不是靠~/.clisprc -
Alt+M手动展开宏比 LSP 补全更可靠,尤其对自定义宏——cl-lsp经常解析失败
最易被忽略的一点:所有方案都依赖解释器命令行可用。在终端敲一遍 scheme --version、clisp -q 或 racket --version,确认能跑,再配 VSCode。否则所有配置都是空中楼阁。











