sublime text原生不支持smalltalk,.st/.cs文件默认显示plain text;需安装smalltalk插件(如michaelblyth版),手动绑定后缀至smalltalk语法,并确保scope为source.smalltalk方可实现高亮与@符号搜索。

Smalltalk文件打开就是Plain Text,不是插件没装好
Sublime Text 原生不支持 Smalltalk,也没进官方 Packages 仓库,所以无论你开 .st 文件还是 .cs 文件,右下角默认显示 Plain Text——这不是识别失败,是压根没注册该语言。装了插件却仍无高亮,90% 是因为插件没把后缀和语法绑定,而不是语法文件本身有问题。
验证方式很简单:打开一个 .st 文件 → 点右下角 Plain Text → 在弹出菜单里找有没有 Smalltalk(注意大小写,smalltalk 或 ST 都不匹配)。没有?说明插件没加载,或语法定义未启用。
- 优先用 Package Control 安装
Smalltalk插件(作者:michaelblyth,GitHub 活跃度高) - 装完别急着关编辑器,新建一个
test.st再试;部分插件需重启 Sublime 才注册语法名 - 如果菜单里有
Smalltalk但不自动应用,说明后缀没绑定——下一步必须做
手动绑定.st/.cs后缀到Smalltalk语法
即使插件已安装且语法名可见,Sublime 也不会自动把 .st 或 .cs 映射过去。它只认 file_extensions 字段声明的后缀,而很多 Smalltalk 插件默认只写了 ["st"],漏掉了 Squeak/Cuis 常用的 .cs(change set)。
正确做法是走「一次绑定,永久生效」路径:
- 打开任意
.st文件 → 点右下角语言名 → 选Smalltalk - 再点右下角 →
Open all with current extension as…→ 选Smalltalk - 重复上两步,对
.cs文件也操作一遍(先切语法,再绑定) - 绑定结果会写入
Packages/User/Preferences.sublime-settings的extensions字段,无需手动编辑
做完后,所有新打开的 .st 和 .cs 文件都会立刻高亮,关键字(ifTrue:、do:)、字符串(单引号)、注释(双引号)全生效。
Dingtalk CLI SKILL / 钉钉 dingding / dingtalk dws skill — 管理钉钉(DingTalk)产品(AI 表单、日历、联系人、机器人、待办事项、审批、考勤、报表等)
Smalltalk符号搜索(@)不工作?先看索引和语法双重状态
Ctrl+P 输入 @methodname 找不到定义,常见原因有两个:文件没保存 + 右下角语法错误。Smalltalk 不像 Python 或 JS 那样有强结构解析,Sublime 的符号索引完全依赖 scope 标记是否准确。
- 确保文件已保存:未保存的
.st内容不会被索引,@搜索必然为空 - 确认右下角显示的是
Smalltalk,不是Plain Text或Text;哪怕只差一个空格(如Smalltalk),scope 就会变成text.plain,符号解析直接失效 - 检查 scope 是否正确:按
Ctrl+Shift+P→ 输入Show Scope Name→ 光标放在Object subclass:#MyClass上,应看到类似source.smalltalk,而非source或text - 首次在含大量
.st的项目中使用@,状态栏会显示Indexing…,等几秒再试
自定义语法时别动 Smalltalk.sublime-syntax 的 scope 值
如果你下载了社区版 Smalltalk.sublime-syntax 并想微调(比如加个新关键字),注意:scope: source.smalltalk 这一行绝不能改。这是 Sublime 符号索引、构建系统、甚至 LSP 客户端识别语言类型的唯一依据。
改错会导致:
-
@搜索彻底失效(索引找不到对应 scope) - 自定义构建系统(如调用
gst编译器)的selector匹配失败 - 第三方插件(如 SublimeCodeIntel)无法挂载语义分析
真正该改的是 contexts 下的具体规则,比如给 Pharo 特有的 #classVariableNames: 加 match 模式。改完记得保存并重启 Sublime,语法变更才生效——Sublime 不热重载 .sublime-syntax 文件。










