sublime text 默认不识别 .scm、.ss、.cl 等 lisp 后缀,需手动绑定 lisp 语法;永久方案包括 set syntax 命令或自定义 lisp.sublime-syntax;须开启 match_brackets 并确保右下角显示 lisp,否则括号高亮与 ctrl+enter 均失效。

Sublime Text 默认不识别 .scm、.ss、.cl 等 Lisp 方言后缀,打开即为 Plain Text,高亮失效、括号不配对、Ctrl+Enter 静音——这不是插件没装,是语法作用域根本没激活。
右下角显示 Plain Text 就说明语法没绑对
Sublime 只靠文件后缀 + 手动语法绑定判断语言,不看内容、不读 shebang。哪怕你写满 (defun hello () (print "hi")),后缀不是 .lisp 或 .lsp,它就当纯文本处理。
- 临时解决:点击右下角语言名 → 选
Lisp(注意不是Clojure或Scheme插件自带的语法) - 永久绑定:
Ctrl+Shift+P→ 输入Set Syntax: Lisp→ 执行Open all with current extension as…→ 选当前语法;对.scm、.ss、.cl、.asd都要重复一遍 - 更彻底:进
Packages/User/新建Lisp.sublime-syntax,在file_extensions列表里追加- scm、- ss、- cl、- asd - 别信
detect_indentation:Lisp 对缩进敏感,必须在Preferences → Settings – Syntax Specific(确保右下角是Lisp)里加"detect_indentation": false
括号匹配高亮不工作?先查 match_brackets 开关
原生括号高亮依赖 match_brackets,但它默认不写入用户配置,拼错或漏写就完全静默失效。
- 打开
Preferences → Settings(右侧用户设置),确认有"match_brackets": true;常见错误:match_bracket(少 s)、match-brackets(用短横线)、被注释掉 - 想高亮括号内整块内容?加
"match_brackets_content": true -
"match_brackets_braces": true控制{},"match_brackets_square": true控制[];"match_brackets_angle": false强烈建议保持关闭,避免 HTML/JS 里误高亮<div> <li>如果 JSON 格式出错(比如引号不闭合、末尾多逗号),整段配置被忽略,<code>Plain Text模式下括号规则也不加载 - 语法必须是
Lisp:右下角显示Lisp,不是Plain Text或Clojure - 光标必须落在闭合括号内:停在
(define (fib n) (if ...))任意位置可发;停在(define (fib n半截上,只会发前半段,REPL 报unmatched parentheses - REPL 必须手动启动:
Ctrl+Shift+P→SublimeREPL: Common Lisp;若报Unable to find sbcl,去Preferences → Package Settings → SublimeREPL → Settings – User填死"sbcl_path",例如"sbcl_path": "/opt/homebrew/bin/sbcl"
Ctrl+Enter 发送代码到 REPL 总是失败?三个条件缺一不可
这个快捷键不是运行脚本,而是把光标所在位置的完整 S-表达式发给已启动的 REPL 进程。语法、光标、REPL 必须同时就位。
最常被忽略的一点:括号高亮和 Ctrl+Enter 共享同一套语法解析引擎。只要右下角不是 Lisp,所有功能都会退化——与其反复调配置,不如先点一下右下角手动切过去。











