Sublime Text汇编构建系统需将.sublime-build文件存于Packages/User/目录,用"cmd"数组调用nasm等汇编器(路径须在PATH中或写绝对路径),"selector"设为"source.asm"或对应语法作用域,配合"file_regex"匹配报错格式,并确保语法高亮与selector一致。

Sublime Text 本身不内置汇编编译功能,必须通过自定义 build system 实现;快捷键只是触发它,关键在 sublime-build 文件内容是否匹配你的汇编器(如 nasm、masm、arm-none-eabi-gcc)和平台路径。
怎么写一个能跑通的汇编 build system
Build system 是 JSON 格式的配置文件,放在 Packages/User/ 目录下,后缀为 .sublime-build。它不靠快捷键驱动,而是靠你手动选中或设为默认后,用 Ctrl+B 触发。
- 必须指定
"cmd"数组:Windows 下用["nasm", "-f", "win64", "$file", "-o", "$file_base_name.o"],Linux/macOS 则通常用["nasm", "-f", "elf64", "$file", "-o", "$file_base_name.o"];注意nasm要已加入系统 PATH,否则得写绝对路径(如"C:/nasm/nasm.exe") -
"selector"推荐设为"source.asm"或"source.nasm",这样只有打开 .asm 文件时Ctrl+B才自动匹配该 build system - 如果要链接生成可执行文件,得用
"shell_cmd"拼接多步(比如先nasm再ld),但更稳的方式是写成 shell 脚本或 Makefile,然后在"cmd"中调用 - 错误输出需能被 Sublime 解析:加
"file_regex"提取报错行号,例如"file_regex": "^(.*?):([0-9]+):([0-9]+):\s*(.*)$"(适配 NASM 默认格式)
为什么 Ctrl+B 没反应或报 “No build system”
常见原因不是快捷键没绑,而是 build system 没生效或没被识别。
- 文件保存了没?
$file变量只对已保存的文件有效;未保存的临时文件会触发失败 - 语法高亮设对了吗?Sublime 靠当前视图的 syntax(如
ASM (NASM))匹配"selector";按Ctrl+Shift+P输入Set Syntax: ASM (NASM)确认 - build system 文件名不能含空格或中文,且必须以
.sublime-build结尾;保存后不用重启,但改完后要重新从Tools → Build System里选一次 - 如果用了插件(如
SublimeAssembly),它的 syntax 定义可能和你 build system 的"selector"不一致,查插件文档确认实际 scope 名,再用Ctrl+Shift+P → Show Scope Name实测
如何给汇编 build 绑定专属快捷键(比如 Ctrl+Alt+B)
快捷键绑定的是 build 命令本身,不是某个 build system —— 所以必须用 "args" 指定 "variant" 或 "select",否则它只会跑默认 build system。
- 先确保你的 build system 文件名为
NASM.sublime-build,且顶层"name"字段是"NASM" - 在
User.sublime-keymap里加这条:
[{"keys": ["ctrl+alt+b"], "command": "build", "args": {"variant": "NASM"}}]
- 注意:
"variant"值必须和 build system 的"name"完全一致(大小写敏感);如果 build system 里有多个"variants",就得用"select"参数配合下拉菜单 - 别直接覆盖
Ctrl+B:它被设计为“当前上下文最优构建”,硬覆盖反而失去自动匹配能力
真正卡住人的地方,往往不是快捷键按不下去,而是 build system 的 cmd 路径写死、file_regex 没对上汇编器输出格式、或者 syntax scope 和 selector 对不上——这些细节一错,Ctrl+B 就静默失败,连错误提示都不给你。



















