需用绝对路径配置CLISP或SBCL构建系统:Windows写["C:/clisp/clisp.exe", "-q", "$file"],Linux/macOS写["sbcl", "--script", "$file"],并加"shell": true(Win)或false(macOS/Linux)确保终端稳定输出。

Build System 怎么配才能跑通 CLISP 或 SBCL?
Sublime 本身不带 Lisp 解释器,Build System 就是把你的 .lsp 文件喂给命令行解释器执行的桥梁。硬写 clisp "$file" 看似简单,但 Windows 下路径含空格、中文,或没加 -q(quiet 模式)都会卡住或报错。
- 必须用完整路径调用解释器,比如
"cmd": ["C:/clisp/clisp.exe", "-q", "$file"],避免 PATH 查找失败 - Linux/macOS 可简写为
["sbcl", "--script", "$file"],但注意 SBCL 默认不静默输出启动信息,得加--no-userinit --disable-debugger防止阻塞 -
$file是 Sublime 内置变量,代表当前保存的文件;如果没保存,构建会失败——别忘了先Ctrl+S - 不要用
clisp -i "$file":-i 是交互式加载,会卡在 REPL 等输入,不是“运行脚本”
为什么 Ctrl+B 后窗口一闪就消失?
这是最常被忽略的终端行为:Sublime 的 Build System 默认调用的是无界面子进程,输出完立刻关闭,你根本看不到错误。尤其 CLISP 遇到未定义函数或括号不匹配时,只打印一行报错就退出。
- 在 Build System 配置里加
"shell": true(Windows)或"shell": false(Linux/macOS),让输出走系统终端更稳定 - 更推荐方式:改用
subl --command "show_panel {"panel": "console"}"配合日志重定向,但实操太重;不如直接在终端里手动跑sbcl --script foo.lsp调试 - 真正想看实时输出,建议放弃 Build System,改用 SublimeREPL + SBCL backend(需额外配置)
SBCL 和 CLISP 的 Build 差异在哪?
两者启动参数和默认行为差异大,混用会导致构建失败:
- CLISP:
clisp -q -i "$file"可加载并执行,但不支持--script;若文件末尾没(quit),会停在交互模式 - SBCL:
sbcl --script "$file"是标准做法,自动加(quit),但要求文件里不能有顶层(defun ...)外的求值表达式(比如裸(print "hi")必须包在(progn ...)或顶层函数里) - Quicklisp 加载必须显式触发:SBCL 构建里加
--load quicklisp/setup.lisp,CLISP 则要-i quicklisp/setup.lisp -i "$file" - 性能上 SBCL 编译快、运行快,CLISP 启动快但解释执行慢;日常调试用 CLISP 更友好,发布前切 SBCL 测试
如何让 (defun c:mycmd ...) 在 AutoCAD 里生效?
这不是 Sublime 配置问题,而是 Common Lisp 和 AutoLISP 的根本混淆。AutoCAD 的 c: 命令只认 AutoLISP(或 VLISP),不认 Common Lisp。SBCL/CLISP 写的 (defun c:mycmd ...) 在 CAD 里永远是无效符号。
- 若目标是 AutoCAD 插件开发,请用专门的 AutoLISP 插件(如 ttscoff 的 AutoLISP),别碰 CLISP/SBCL
- 若只是想用 Common Lisp 写工具链(比如生成 LSP 文件),那构建系统只负责生成文本,不负责加载进 CAD
- 常见误操作:把
.lsp后缀的文件用 SBCL 构建,结果输出一堆编译警告,却以为是语法错——其实是解释器类型错配
真正的跨环境协作点只有一个:用 Common Lisp 生成符合 AutoLISP 语法规则的字符串,再由 Sublime 保存为 .lsp,最后手动 (load "xxx.lsp") 进 CAD。其余所有“一键加载进 CAD”的设想,目前都没有稳定实现。

















