sublime text 默认不识别.rs文件为rust语法,因仅依赖扩展名硬匹配且未预设.rs映射;需手动选rust或通过“set as default for .rs files”绑定,否则右下角显示plain text,导致高亮、构建、lsp全部失效。

Sublime Text 默认不识别 .rs 文件为 Rust 语法,必须手动绑定;否则右下角始终显示 Plain Text,后续所有构建、LSP、高亮全部失效。
为什么 .rs 文件打开就是 Plain Text
Sublime Text 的语法识别完全基于扩展名硬匹配,不分析文件内容。内置语法包里虽有 Rust 支持,但默认未将 .rs 映射到它——这不是 bug,是设计如此。你看到的“没高亮”,本质是编辑器根本不知道这是 Rust。
- 点右下角状态栏(显示
Plain Text的地方),手动选Rust - 如果菜单里没有
Rust,说明插件没加载:用 Package Control 安装Rust(by rust-lang),不是RustEnhanced;二者共存会导致状态栏卡死 - 装完后进
View → Syntax → Rust → Rust,设为默认,避免每次手动切
如何让所有 .rs 文件自动识别为 Rust
手动切换只对当前文件生效。要全局生效,得显式绑定扩展名和语法:
- 打开任意
.rs文件,确认右下角已显示Rust - 右键状态栏的
Rust→Set as Default for .rs Files - Sublime 会自动生成
Packages/User/Rust.sublime-settings并写入{"extensions": ["rs"]} - 改完无需重启,新打开的
.rs文件立刻生效
ApplySyntax 规则能替代手动绑定吗
不能。ApplySyntax 是按规则顺序匹配的额外层,但它依赖底层语法已存在且可用;如果 Rust 语法本身没被正确加载或未绑定 .rs,ApplySyntax 规则连命中机会都没有。
- 它的典型规则形如:
{"file_name": "\.rs$", "syntax": "Packages/Rust/Rust.sublime-syntax"} - 但这个
syntax路径必须真实存在、大小写准确、后缀正确(ST4 用.sublime-syntax) - 规则生效前必须重启 Sublime,且优先级低于手动绑定——一旦
.rs已被Set as Default,ApplySyntax 就不会触发
容易忽略的冷门点
有些项目里 .rs 文件可能藏在子目录,或通过符号链接打开;只要路径里含 .rs,上述绑定就生效。但如果你用 Ctrl+N 新建空白文件再保存为 main.rs,它仍可能 fallback 到 Plain Text——因为新建文件默认走 default_syntax 设置,和扩展名无关。这时需要单独配 "default_syntax": "Packages/Rust/Rust.sublime-syntax" 到用户设置里,并重启。











