sublime text 默认 pascal 支持不兼容 delphi 风格,需手动替换为 pascalimproved 语法包并配置扩展名和构建系统;验证要点包括关键字变色、块折叠及 .dpr/.dpk 自动识别。

Sublime Text 默认的 Pascal 语法和构建系统对现代 Pascal(尤其是 Delphi 风格)完全不兼容——property 灰色、interface/implementation 无折叠、fpc 报错不跳转、.dpr 文件当纯文本,这些不是你配置错了,是底层语法定义和构建逻辑根本没覆盖。
怎么确认当前 Pascal 语法是否真正生效
右下角显示 “Pascal” ≠ 正确高亮。必须手动验证:property、class、inherited 是否变色;unit MyUnit; 整行是否被识别为声明而非普通文本;interface 和 implementation 块能否折叠。
常见错误现象:
-
property输入后仍是灰色,说明还在用原生 tmLanguage 旧包 -
.dpr文件打开后右下角显示 “Plain Text”,说明扩展名未绑定 - 删除
Packages/Pascal/后仍无效,可能是残留了Pascal.sublime-package或未重启 Sublime
必须手动替换为 PascalImproved 语法包
Package Control 搜 “Delphi” 或 “Pascal” 安装的插件基本失效或崩溃,ST4 唯一稳定方案是社区维护的 PascalImproved:它用现代 .sublime-syntax 重写,支持 strict private、泛型、Unicode 字符串前缀(如 u'中文'),并默认识别 .pas、.dpr。
操作要点:
- 完全退出 Sublime Text
- 定位
Packages目录:~/Library/Application Support/Sublime Text/Packages/(macOS)、%APPDATA%Sublime TextPackages(Windows)、~/.config/sublime-text/Packages/(Linux) - 删除整个
Pascal/文件夹(不是Pascal.sublime-package) - 从 https://www.php.cn/link/d18a6195ef9a4d256b2cfad6aa68e3f7 下载 ZIP → 解压 → 重命名为
Pascal→ 拖入Packages目录 - 重启后打开
.pas文件,右键 →Set Syntax → Pascal,立即验证关键字颜色
让 .dpr 和 .dpk 文件自动使用 Pascal 语法
PascalImproved 默认只绑定 .pas 和 .dpr,但 Delphi 项目中常见的 .dpk(包文件)和 .inc(包含文件)仍被识别为纯文本,需显式注册。
操作方式:
- 菜单栏 →
Preferences → Settings – Syntax Specific - 在右侧用户配置中粘贴:
{
"extensions": ["pas", "dpr", "dpk", "inc"]
}
保存后,所有 .dpk 文件打开即自动应用 Pascal 语法,requires、contains 等关键字将获得正确 scope。
配置靠谱的 Pascal.sublime-build 文件
构建系统不是抄模板就能用——fpc 路径、file_regex 格式、Windows 路径空格、控制台闪退,每个点都可能断链。
关键配置项:
-
"shell_cmd"必须用绝对路径,例如/usr/local/bin/fpc(macOS/Linux)或C:\fpc\3.2.2\bin\i386-win32\fpc.exe(Windows),避免依赖 PATH -
"file_regex"要匹配你本地fpc输出:新版默认是^([^:]+):([0-9]+):([0-9]+),老版带括号则用^([^:]+)\(([0-9]+),([0-9]+)\) - Windows 下路径含空格会导致参数解析失败,务必把 fpc 装到
C:\fpc\这类无空格路径 - 加
"variants"实现一键运行:"cmd": ["cmd", "/c", "$file_base_name.exe & pause"](Windows)或"cmd": ["bash", "-c", "./$file_base_name"](macOS/Linux) - 中文乱码?加编译参数
-Cg强制使用系统编码(仅 Windows 控制台)
最易忽略的一点:Sublime 的 build system 不会自动保持终端窗口,readln 是临时解法,但真正稳定的方案是用 cmd /c xxx & pause 或 start cmd /k 包裹运行命令。











