编译指令在Packages/User/目录下的.sublime-build文件中修改;需手动创建或编辑如NASM.sublime-build等JSON文件,配置cmd数组、selector作用域及shell选项。

编译指令在哪改:找到对应的 .sublime-build 文件
Sublime Text 的汇编编译行为由构建系统(Build System)控制,本质就是一个 JSON 格式的 .sublime-build 文件。它不藏在菜单里,也不靠插件自动创建——你得自己建或改它,位置在:Packages/User/ 目录下(可通过 Preferences → Browse Packages… 打开)。常见命名如 NASM.sublime-build、GAS.sublime-build 或 ASM.sublime-build。
注意:别去改 Packages/Default/ 里的默认构建文件,那是只读的;也别指望“安装插件就自带可用构建系统”——多数汇编插件只管高亮,不管编译。
cmd 字段怎么写:路径、参数、Shell 模式要对得上
cmd 是真正执行命令的地方,写错一个斜杠或漏掉引号,Ctrl+B 就直接报错。Windows 下尤其容易翻车:
使用ydata-profiling(前身为pandas-profiling)生成全面的数据质量报告,包含相关性分析、缺失值模式和基数检测。导出交互式HTML仪表板和JSON摘要。
- 路径含空格必须用双引号包裹,比如:
"C:\Program Files\NASM\nasm.exe" - 反斜杠
在 JSON 里是转义字符,必须写成\;正斜杠/反而更安全,推荐统一用/,如:"C:/nasm/nasm.exe" - 如果用了
shell_cmd(而非cmd),就走系统 shell,可写nasm -f win64 "$file" -o "${file_path}/${file_base_name}.obj";但cmd模式下不能直接用$file这类变量,得用数组形式传参 - Windows 上调用
link.exe或ml.exe前,确认它们在PATH中,否则必须写绝对路径
selector 必须和当前语法 scope 完全匹配
这个字段决定 Sublime 什么时候自动启用这个构建系统。它不是后缀名,而是语法定义里声明的 scope 名。例如:
- 你手动设了语法为
Assembly (NASM),那它的 scope 很可能是source.asm.nasm,selector就得写"source.asm.nasm" - 若用的是
EnhancedAssembly → x86 (GAS),scope 通常是source.gas,selector就不能写成source.s或source.asm - 查不准?光标停在代码任意处,按
Ctrl+Shift+P输入Developer: Show Scope Name,第一行就是当前 scope - 不匹配的后果:菜单里看不到该构建系统,或者点了也没反应——高亮和构建是两套系统,但都卡在 scope 这个起点上
多步骤编译(汇编→目标→链接→运行)怎么串起来
单条 cmd 只能跑一个命令。想一次 Ctrl+B 完成 nasm → ld 或 ml → link,得靠 variants 或封装脚本:
- 用
variants定义多个子命令,比如:"name": "Assemble"只调nasm,"name": "Link"再调ld,手动切换 - 更常用的是写一个批处理(Windows)或 shell 脚本(macOS/Linux),把多步逻辑包进去,然后
cmd只调这个脚本,比如:["build_asm.bat", "$file_base_name"] - 脚本里注意路径传递:Sublime 的
$file等变量不会透传进脚本,得靠$file_base_name+$file_path拼出来,且 Windows 脚本里别用/当路径分隔符 - 别忘了加
"shell": true(尤其调脚本时),否则.bat或.sh不会执行
真正容易被忽略的是:修改完 .sublime-build 后,必须确保当前文件右下角显示的语法名和 selector 完全一致——哪怕只差一个点或大小写,构建系统都不会触发。










