Sublime Text 3 需手动配置才能支持 Delphi 语法高亮与编译:先确保 fpc/dcc32 已加入 PATH 并可终端调用,再替换原生 Pascal 语法为 PascalImproved,最后创建 Pascal.sublime-build 文件指定构建命令。

interface、implementation、property 这些关键字,更不会调用 fpc 或 dcc32。
确认 fpc 或 dcc32 能在终端直接调用
这是所有后续操作的前提。Sublime 不自带编译器,只负责调起你系统里已有的命令。
- Windows 上打开 CMD,执行
where fpc(Free Pascal)或where dcc32(Delphi 编译器),必须有输出路径;没有说明没进PATH - macOS/Linux 执行
which fpc,再跑fpc -i看是否输出版本和目标平台 - 如果
fpc -v报 “command not found”,别急着配 Sublime——先修环境变量。改完记得彻底关掉 Sublime(任务管理器杀进程),再从终端启动:open -a "Sublime Text"(macOS)或subl(Linux/Windows WSL) - Free Pascal 推荐用 3.2.2+,对 Unicode 和泛型支持更稳;Delphi 用户若用
dcc32,注意它只在 Windows 且需安装完整 IDE,命令行调用常受限于注册表路径
替换默认 Pascal 语法为 PascalImproved
原生 Pascal 语法包只识别 program/begin/end,现代 Delphi 关键字全灰,unit 头部、strict private、class 声明统统不着色——这不是插件没装对,是语法定义文件本身缺失特性。
- 关闭 Sublime Text
- 进入
Packages目录:
— macOS:~/Library/Application Support/Sublime Text/Packages/
— Windows:%APPDATA%Sublime TextPackages
— Linux:~/.config/sublime-text/Packages/ - 删掉现有
Pascal/文件夹(不是重命名,是彻底删除) - 去 GitHub 下载 PascalImproved 的 ZIP,解压后把整个文件夹重命名为
Pascal,丢进Packages目录 - 重启 Sublime,打开
.pas文件,右下角手动选Set Syntax → Pascal;如果仍显示灰文本,检查是否残留旧Pascal/文件夹
手动创建 Pascal.sublime-build 文件(支持 .dpr/.dpk 编译)
别用 Package Control 搜“Pascal Build”——搜到的多是 Sublime 2 时代的 .tmLanguage + 批处理脚本方案,System.in 输入会卡死,且无法正确解析 unit 路径。
- 打开 Sublime →
Preferences → Browse Packages → User - 新建文件,命名为
Pascal.sublime-build - 填入以下内容(适配 Free Pascal,支持中文源码、自动清理 .o/.ppu):
{
"cmd": ["fpc", "-Mdelphi", "-Criot", "-Xs", "-g", "-O2", "-v0", "$file"],
"file_regex": "^(.*?):([0-9]+):([0-9]+)(?:\s*\((?:F|E|W)\))?\s*(.*)$",
"working_dir": "${file_path}",
"selector": "source.pascal",
"encoding": "UTF-8",
"variants": [
{
"name": "Run",
"shell": true,
"cmd": ["${file_base_name}"],
"working_dir": "${file_path}"
}
]
}
-
-Mdelphi启用 Delphi 兼容模式,识别interface/implementation块 -
-Criot生成控制台程序(非 GUI),避免双击黑窗闪退 -
-Xs剥离调试符号减小体积,-g保留调试信息供后续调试 - 若用 Delphi 的
dcc32,替换"cmd"为:["dcc32", "+Win32", "$file"],但需确保dcc32.cfg已配置好-U单元路径 - 要让
.dpr文件也触发该构建系统,需额外设置:菜单 →Preferences → Settings – Syntax Specific,右侧加:"syntax": "Packages/Pascal/Pascal.sublime-syntax"
运行时 stdin 输入卡住?别用 shell_cmd + bat
很多教程教你在 variants 里写 "shell_cmd": "start cmd /k ${file_base_name}.exe & pause"——这在需要 readln 时必然卡死,因为 Sublime 的 build system 不接管子进程 stdin/stdout 流。
- 真正能交互的方式只有两种:
— 用SublimeREPL插件(推荐,支持fpc但需手动配repl_fpc)
— 或直接在终端里跑:fpc hello.pas && ./hello - 如果你坚持要在 Sublime 内运行带输入的程序,
variants中的"shell": true必须配合"cmd"数组形式,不能混用shell_cmd字符串——后者绕过 Sublime 的 I/O 管理,导致流挂起 - Free Pascal 编译出的可执行文件名默认和
$file_base_name一致,但若源文件含program xxx;声明,实际输出名以xxx为准;建议统一用fpc -o${file_base_name}显式指定输出名
PATH,尤其 macOS。哪怕 which fpc 在终端成功,Sublime 里仍可能找不到命令——务必用终端启动它,或在 Pascal.sublime-build 中用绝对路径写死 fpc 位置,比如 /usr/local/bin/fpc。


















