sublime text 默认 pascal 语法不支持 delphi 2009+ 特性,需手动替换为 pascalimproved 语法包并配置扩展名与构建系统。

Sublime Text 默认不识别 Delphi 风格的 Pascal 代码,property、strict private、class helper 这些关键字全灰,interface/implementation 块无折叠、无配色——这不是你写错了,是语法定义根本没加载对。
为什么右下角显示“Pascal”但关键字还是灰色?
原生 Sublime 的 Pascal 语法包只支持 Turbo Pascal 时代的老式语法(program、begin/end),对 Delphi 2009+ 的 Unicode 字符串、泛型、匿名方法、strict 访问修饰符等完全无视。它甚至不认 .dpr 文件,打开就当纯文本。
常见错误现象:
- 输入
property后没变蓝,仍为默认灰色 -
unit MyUnit;整行无高亮,interface和implementation块颜色一致 - 右键 → Set Syntax → Pascal 后,
inherited或constructor仍无颜色
别搜 “Delphi” 插件——Package Control 里排在前几位的 tmLanguage 包全是 Sublime Text 2 遗留物,在 ST4 上会静默失效或导致崩溃。
必须手动替换为 PascalImproved 语法包
目前唯一稳定适配 Sublime Text 4 的方案是 PascalImproved:它用现代 .sublime-syntax 重写,正确识别 class、record、type 块内声明,支持 .pas、.dpr、.dpk、.inc 四种扩展名,并处理 Unicode 标识符和字符串前缀(如 u'中文')。
操作步骤:
- 完全退出 Sublime Text
- 定位
Packages目录:
macOS:~/Library/Application Support/Sublime Text/Packages/
Windows:%APPDATA%\Sublime Text\Packages\
Linux:~/.config/sublime-text/Packages/ - 删除目录下名为
Pascal/的文件夹(不是Pascal.sublime-package) - 访问 GitHub 仓库 → Code → Download ZIP → 解压 → 将解压出的文件夹**重命名为
Pascal** → 拖入Packages目录 - 重启 Sublime,打开任意
.pas文件 → 右键 → Set Syntax → Pascal → 输入property Foo: Integer read GetFoo write SetFoo;看是否变蓝
让 .dpr 和 .dpk 文件也自动高亮
PascalImproved 默认只绑定 .pas 和 .dpr,但 Delphi 项目中常见的 .dpk(包文件)和 .inc(包含文件)仍被识别为 Plain Text。必须显式注册扩展名。
菜单栏 → Preferences → Settings – Syntax Specific,在右侧用户配置中加入:
{
"extensions": ["pas", "dpr", "dpk", "inc"]
}
保存后,所有 .dpr 文件打开即自动使用 Pascal 语法;.dpk 中的 requires、contains 等关键字也会着色。
编译运行需独立配置 build system
语法高亮只是第一步。要真正编译运行,得配 Pascal.sublime-build 文件,且不能依赖系统 PATH —— macOS/Linux GUI 启动的 Sublime 默认不读 shell 的 PATH,Windows 下路径含空格(如 Program Files)会导致 fpc 参数解析失败。
关键点:
- 确认终端中能运行
fpc -v;若不行,先修复系统环境变量或记下fpc绝对路径(如/usr/local/bin/fpc或C:\fpc\3.2.2\bin\i386-win32\fpc.exe) - Tools → Build System → New Build System…,填入:
{
"shell_cmd": "/usr/local/bin/fpc -Mdelphi -O2 -o\"$file_base_name\" \"$file\"",
"file_regex": "^([^:]+):([0-9]+):([0-9]+)",
"selector": "source.pascal",
"variants": [
{
"name": "Run",
"shell_cmd": "./$file_base_name"
}
]
}
说明:
-
-Mdelphi启用 Delphi 兼容模式(支持begin..end.后多点、as类型转换等) -
file_regex必须匹配你本地fpc实际报错格式;新版默认是hello.pas:12:5,老版可能是hello.pas(12,5),正则要同步改 - Windows 用户把
"./$file_base_name"改成"$file_base_name.exe",并确保shell_cmd路径不含空格
最后,打开 .pas 文件 → View → Syntax → Open all with current extension as… → Pascal → Tools → Build → Run,才能触发完整流程。
最容易被忽略的是:build system 的 selector 必须与当前文件语法 scope 严格匹配。如果语法没设对(右下角虽显示 Pascal,但实际 scope 是 source.pascal 还是 source.pascal.old?),整个 build 就不会触发——建议用 Ctrl+Shift+P → “Show Scope Name” 确认。











