sublime text无法真正运行smalltalk,仅支持语法高亮和调用外部pharo执行脚本;需安装smalltalk插件并手动绑定.st后缀,若show scope name显示text.plain则说明语法未生效。

Sublime Text 不能运行 Smalltalk,只能高亮 .st 文件并调用外部 Pharo 执行脚本——这是由它的架构决定的,不是配置不到位。
为什么装了插件还是显示 Plain Text?
常见原因是语法包没真正绑定到 .st 后缀,或被其他插件覆盖。安装 Smalltalk 插件(作者 guillermooo)后,必须手动触发一次“默认语法绑定”:
- 打开任意
.st文件,点击右下角当前显示的Plain Text - 选择
Smalltalk→ 立即再点一次右下角 → 选Open all with current extension as…→ 再选Smalltalk - 如果仍无效,按
Ctrl+Shift+P输入Show Scope Name,光标放在ifTrue:或[:x | x + 1]上,应看到类似keyword.control.smalltalk;若显示text.plain,说明语法作用域未加载
如何验证 Smalltalk 语法高亮是否生效?
有效高亮会区分以下几类结构,而不是全文件统一颜色:
-
Object subclass: #MyClass中的subclass:是keyword.control.smalltalk -
[:x | x + 1]整体是meta.block.smalltalk,:和|有独立 scope - 类名如
#MyClass是constant.language.smalltalk,方法名如doSomething是entity.name.function.smalltalk - 若字符串、注释、数字都无颜色,大概率是 YAML 语法定义加载失败,或插件目录名冲突(比如同时存在
smalltalk和Smalltalk文件夹)
想“运行” .st 文件?只能走 pharo 命令行
Sublime 没有嵌入 VM,不加载镜像,也不维护活对象图——所有“运行”本质是 shell 调用。需确保系统已安装 Pharo 并在 $PATH 中:
- 终端执行
pharo --version应返回版本号(如Pharo 11.0.0) - 在 Sublime 中保存
hello.st,内容为'Hello from Smalltalk!' printNl. - 按
Ctrl+Shift+P→ 输入Build With→ 选New Build System… - 填入以下内容并保存为
Pharo.sublime-build:
{
"cmd": ["pharo", "pharo.image", "eval", "--save", "$file"],
"selector": "source.smalltalk",
"working_dir": "$file_path"
}
注意:pharo.image 需替换为你本地实际镜像路径(如 ~/pharo/Pharo11.image),否则构建会卡住或报 No such file or directory。
容易被忽略的关键点
Smalltalk 在 Sublime 中不是“开发环境”,只是带高亮的文本编辑器。你无法:
- 实时 inspect 一个对象(没有 Inspector 窗口)
- 在运行中修改方法并立即生效(无热重定义能力)
- 查看对象图或 method references(无浏览器集成)
- 调试断点(
self halt会直接 crash 外部 pharo 进程,不进 debugger)
这些功能只存在于 Pharo Launcher 或原生 Pharo 映像中。Sublime 的角色仅限于写、看、传文件给 Pharo——别指望它替代 IDE。











