必须安装作者为evilC的SublimeAutoHotkey插件,配置绝对路径的Build System,启用auto_complete并等待索引完成,设置Syntax Specific关联.ahk后缀,才能实现语法高亮、补全、跳转和正常构建。

装对插件:只认 SublimeAutoHotkey(作者 evilC)
Sublime Text 默认完全不识别 .ahk 文件,装错插件就全白搭。Package Control 里搜 “AutoHotkey” 会出现至少三个同名插件,但只有 SublimeAutoHotkey(作者栏明确写 evilC)持续维护、兼容 ST4 和 AHK v2。fincs 的旧版已多年未更新,在 Win11 + AHK v2 下解析错漏多,函数跳转失效,甚至拖慢启动。
操作路径:Ctrl+Shift+P → 输入 Package Control: Install Package → 等列表加载完 → 搜 SublimeAutoHotkey → 只选作者为 evilC 的那一项。装完必须重启 Sublime,新建 test.ahk,右下角状态栏应显示 AutoHotkey;若仍是 Plain Text,先删掉 %APPDATA%Sublime Text 4PackagesUser 下残留的旧插件配置(如 AutoHotkey 或 sublime-ahk 相关文件夹),再重装。
配 Build System:路径写死比加 PATH 更稳
Ctrl+B 报错 'autohotkey' is not recognized 或 The system cannot find the file specified,90% 是因为构建系统没指向真实 AutoHotkey.exe。Sublime 不查系统 PATH,也不猜路径,只认你写的绝对路径。
正确做法:
- 菜单 →
Tools→Build System→New Build System… - 粘贴以下内容(注意双反斜杠
\,单斜杠会解析失败):
{"cmd": ["C:\Program Files\AutoHotkey\v2\AutoHotkey.exe","$file"],"shell": true,"working_dir":"$file_path","file_regex":"^([^ ]+)((\d+)):? ?(.*)$","selector":"source.ahk"}
保存为 AutoHotkey.sublime-build(扩展名必须是 .sublime-build)。之后打开任意 .ahk 文件,在右下角 Build System 菜单里手动选它。
AHK v1 用户请把路径改成 C:Program FilesAutoHotkeyAutoHotkey.exe,别漏掉 v2 文件夹层级;路径含空格必须用双引号包裹整个路径,或改用短路径如 C:Progra~1AutoHotkey2AutoHotkey.exe。
补全和跳转:两个开关 + 等索引完成
补全不弹、Ctrl+Click 跳不到函数,不是插件坏了,而是两个隐藏条件没满足:
- 确认全局补全已启用:菜单 →
Preferences→Settings,左侧默认设置中搜auto_complete,确保值为true - 函数跳转依赖插件后台索引,首次使用需等右下角状态栏出现
Indexing…提示消失;若一直转圈,删掉%APPDATA%\Sublime Text 4\Cache\SublimeAutoHotkey后重载 - 补全触发词(如
if、loop、send)大小写敏感,输入IF不会弹出,必须小写 - 自定义函数跳转只支持当前文件内定义的函数,跨文件不识别——这是 Sublime 自身限制,不是插件缺陷
让 .ahk 文件自动识别语法
每次新建或双击打开都要手动切语法太麻烦。要一劳永逸,得改文件关联规则:
菜单 → Preferences → Settings – Syntax Specific → 在右侧窗口粘贴:
{"extensions": ["ahk","ahk2"]}
保存后,所有带 .ahk 或 .ahk2 后缀的文件都会自动用该插件语法高亮。注意:这个设置只对当前语法生效,所以务必在 Settings – Syntax Specific 里操作,而不是通用设置。
如果仍显示 Plain Text,检查是否误装了同名但非 SublimeAutoHotkey 的插件;或右键标签页 → Set Syntax → AutoHotkey 手动指定一次。
最常被忽略的是索引等待时间——补全和跳转不是装完就生效,第一次打开大一点的 .ahk 文件时,右下角状态栏的 Indexing… 可能持续几秒,此时强行 Ctrl+Click 就会跳空。另外,working_dir 没设会导致 FileRead 找不到同级资源,这个参数不能省。


















