sublime text 无法运行 smalltalk 是因为它不嵌入虚拟机、不加载镜像、不维护活对象图,仅支持语法高亮、文本编辑和 git 操作;所有“运行”实为调用外部 pharo 命令执行脚本,非真正交互式开发。

Sublime Text 无法配置 Smalltalk 运行环境,也不能“运行”或“调试”Smalltalk;它只能做语法高亮 + 文本编辑 + Git 操作 —— 因为没有 VM、不加载镜像、不维护活对象图。
为什么 Sublime 不能运行 Smalltalk?
Smalltalk 的核心能力(如对象实时修改、方法热重定义、Inspector 探查活对象)依赖完整的虚拟机 + 镜像(image)+ 对象图持久状态。Sublime 是纯文本编辑器,不嵌入任何 VM,也不连接 Pharo/VA Smalltalk 等后端进程。所有声称“在 Sublime 中运行 Smalltalk”的方案,本质都是调用外部 pharo 命令执行脚本文件,和直接在终端里敲 pharo my.image eval --save '42 factorial' 没区别。
你真正要解决的,只是两个问题:
- 让
.st文件正确高亮(识别Object subclass: #MyClass、[:x | x + 1]等语法) - 让 Sublime 能把当前文件传给系统已安装的 Pharo 执行(仅限脚本式评估,非交互式开发)
如何让 .st 文件正确高亮?
Sublime 默认不带 Smalltalk 语法支持,需手动安装并绑定:
- 按
Ctrl+Shift+P(Win/Linux)或Cmd+Shift+P(Mac),输入Package Control: Install Package,回车 - 搜索并安装
Smalltalk(作者:guillermooo,GitHub 仓库名sublime-smalltalk) - 安装完成后,打开任意
.st文件,点击右下角Plain Text→ 选Smalltalk - 再点一次右下角 →
Open all with current extension as…→ 选Smalltalk,这样所有.st文件就自动高亮了
如果高亮仍异常(比如 ifTrue: 被当作文本),用 Ctrl+Shift+P → Show Scope Name 查光标处的 scope,常见应为 keyword.control.smalltalk 或 entity.name.function.smalltalk;若显示 text.plain,说明语法包没生效或被其他插件覆盖。
怎么配构建系统让 Ctrl+B 运行 .st 脚本?
这仅适用于“一次性执行脚本”,不是 Smalltalk 开发环境替代品。前提是你已装好 Pharo 并能从终端运行:
Dingtalk CLI SKILL / 钉钉 dingding / dingtalk dws skill — 管理钉钉(DingTalk)产品(AI 表单、日历、联系人、机器人、待办事项、审批、考勤、报表等)
- 终端执行
pharo --version应输出类似Pharo 11.0.0;否则先去https://pharo.org/download下载并加入PATH - 菜单 →
Tools → Build System → New Build System… - 粘贴以下内容(注意:全英文引号、无中文标点、
selector必须是source.smalltalk):
{
"cmd": ["pharo", "pharo.image", "eval", "--no-quit", "$file"],
"selector": "source.smalltalk",
"file_regex": "^\[(.*?):([0-9]+):([0-9]+)\] (.*)$",
"working_dir": "$file_path"
}
保存为 Packages/User/Pharo.sublime-build,然后菜单 → Tools → Build System 选中它。按 Ctrl+B 即可执行当前 .st 文件(前提是该文件是合法表达式,如 Transcript show: 'hello'; cr.)。
⚠️ 注意:此方式不支持交互式调试、不加载类定义到镜像、不维护上下文。写类或方法定义时,Ctrl+B 会静默失败或报错 —— 这不是配置问题,是设计限制。
高亮颜色不对?别改语法,改配色方案
语法(Smalltalk 插件)只负责把 self 标记为 variable.language.smalltalk,但染什么颜色由当前 color_scheme 决定。如果你发现关键字太淡、字符串看不清:
- 打开
Preferences → Color Scheme,换一个支持 Smalltalk scope 的主题(如Monokai Extended或Material Theme) - 或者手动编辑
Packages/User/YourTheme.sublime-color-scheme,在"rules"数组里加:
{
"scope": "keyword.control.smalltalk",
"foreground": "#FF6B6B"
},
{
"scope": "variable.language.smalltalk",
"foreground": "#4ECDC4"
}
改完保存,再从 Color Scheme 菜单重新选一遍才生效。别漏掉 scope 名称 —— 错一个字母(比如写成 smalltalk 而非 smalltalk)就完全不匹配。
Smalltalk 开发真正的瓶颈不在编辑器,而在你是否愿意切回 Pharo 镜像里写代码。Sublime 只适合写脚本、整理文档、做 Git 提交 —— 把它当个高级记事本用,反而最稳。










