寄存器不高亮的根本原因是sublime未正确识别汇编语法:右下角必须显示x86(gas)或assembly(nasm),.s与.s需分别绑定,且构建系统selector须严格匹配show scope name输出的scope名。

右下角显示 Plain Text 就说明寄存器根本不会高亮
这不是插件没装,是 Sublime 压根没把当前文件当汇编处理。只要右下角写着 Plain Text、ShellScript 或 C,哪怕你装了十个插件,%rax、rbp、eax 全部保持黑白——高亮引擎压根不启动。
实操建议:
- 打开一个
.s或.asm文件,点击右下角文字(比如Plain Text) - 在弹出菜单里搜索
x86 (GAS)或Assembly (NASM),选中它 - 如果菜单里根本没有这些选项:按
Ctrl+Shift+P→ 输入Package Control: Enable Package→ 搜索并启用EnhancedAssembly或GNU Assembly (GAS) Syntax Highlighting
.s 和 .S 必须分别绑定,否则寄存器永远灰着
.s 文件常以 #include 或 #define 开头,Sublime 会直接 fallback 到 ShellScript 语法;.S(大写)则被当作完全独立后缀,不会继承小写规则。结果就是 %rbp、$1、.globl 全无颜色。
实操建议:
- 临时验证:打开
.s文件 →Ctrl+Shift+P→ 输入Set Syntax: x86 (GAS)回车,立刻看%rax是否变色 - 永久绑定:右键文件标签页 →
Open all with current extension as…→ 选EnhancedAssembly → x86 (GAS)(注意大小写和空格必须完全一致) - 对
.S文件重复上述操作——不能跳过,Sublime 不自动关联
寄存器不着色?不是配置错,是语法包没定义这个词
光标停在 r12b 或 vmovdqa 上,按 Ctrl+Shift+P → 输入 Developer: Show Scope Name。如果输出里不含 variable.register.x86 或 support.instruction.avx512,说明语法文件根本没收录该 token。
实操建议:
- 别改
Packages/EnhancedAssembly/...下的原始.sublime-syntax文件——升级会覆盖,且 YAML 格式错一字符就整个语法失效 - 安全做法:用
PackageResourceViewer提取原语法 → 复制到Packages/User/下重命名(如MyGAS.sublime-syntax)→ 只在instructions或registers规则块里加正则,例如:- match: \b(r[0-9]{1,2}b|r[0-9]{1,2}w|r[0-9]{1,2}d|r[0-9]{1,2})\b - 主题也可能干扰:换用
Monokai或Adaptive主题再试一次Show Scope Name
构建系统 selector 必须和语法 scope 严格一致
自定义 nasm.sublime-build 时,selector 字段必须匹配你手动设置的语法 scope。比如你用的是 EnhancedAssembly → x86 (GAS),那 selector 得写成 source.gas;若用的是 Assembly (NASM),则 selector 应为 source.asm.nasm。不一致会导致 Build 菜单里找不到项,或 Build 时静默失败。
实操建议:
- 先确认当前语法 scope:
Ctrl+Shift+P→Developer: Show Scope Name,看第一行输出(如source.gas) - 新建构建系统时,
selector字段必须一字不差填入该 scope -
.s文件若仍被识别为ShellScript,构建系统永远不会触发——高亮和构建都卡在同一关:右下角语法名是否正确
寄存器高亮依赖的不是“装插件”,而是三件事同时成立:右下角语法名正确、后缀绑定无遗漏、scope 名与构建 selector 完全匹配。其中最容易被忽略的是 .S 和 .s 必须分开绑定,以及 Show Scope Name 输出的 scope 名必须原样抄进 selector。











