sublime text 能运行 rust,但需手动配置 build system 且 cargo 必须在 sublime 进程中真正可用;终端能运行 ≠ sublime 能调用,需验证控制台 path 包含 .cargo/bin、设 "working_dir": "${project_path:${folder}}"、加 "shell": true,并配准 file_regex 支持错误跳转。

能,但必须手动配 Build System,且 cargo 必须在 Sublime 进程里真正可用——终端能跑 ≠ Sublime 能调用。
Sublime 控制台里 cargo --version 报错怎么办
这是最常卡住的一步。Sublime 启动时读的是自己的环境变量,和你终端里看到的 PATH 完全无关。
- 按
Ctrl+`打开 Sublime 控制台,执行:import os; print(os.environ.get('PATH')) - 确认输出中包含
.cargo/bin(macOS/Linux)或%USERPROFILE%.cargoin(Windows) - macOS/Linux:确保
~/.cargo/bin已写入~/.zshrc或~/.bash_profile,并执行过source ~/.zshrc;但 GUI 启动的 Sublime 不加载它,推荐从终端用subl启动 - Windows:把
%USERPROFILE%.cargoin加进「系统环境变量」,加完必须彻底退出 Sublime(关窗口不够),再重开 - 验证是否真生效:在控制台里运行
import subprocess; subprocess.run(['cargo', '--version']),不报FileNotFoundError才算成功
Build System 中 working_dir 为什么不能用 ${file_path}
cargo run 必须在含 Cargo.toml 的目录下执行,否则直接报 error: no Cargo.toml file found。
-
${file_path}指向当前打开文件所在目录(比如打开src/main.rs时是src/),不是项目根目录 - 必须写成:
"working_dir": "${project_path:${folder}}" - 前提是:你用
File → Open Folder加载了整个项目文件夹(含Cargo.toml),不是只双击单个.rs文件 - 右键标签页 →
Reveal in Side Bar确认当前视图是否在项目根目录层级
file_regex 不配或写错,错误就只是纯文本
没这行,编译失败后双击错误行不会跳转,所有输出变成静态日志,失去可操作性。
- 标准写法:
"file_regex": "^(.+):([0-9]+):([0-9]+):\s*(.*)$" - 注意反斜杠要双写(JSON 字符串内),
\s*不能写成s*或漏掉$ - 网上抄的正则常多一个空格、少一个
:或结尾没$,导致匹配失效 - 如果 cargo 输出格式变化(如新版 rustc 偶尔带额外前缀),可能需微调,例如改成
"^(?:[^:]+: )?(.+):([0-9]+):([0-9]+):.*$"
cmd 和 shell_cmd 到底该用哪个
shell_cmd 更稳,尤其 Windows 上含空格路径或需要 shell 特性(如别名、PATH 继承)时。
- 用
"cmd": ["cargo", "run"]:Sublime 直接 fork 进程,PATH 必须绝对完整,且路径不能含空格 - 用
"shell_cmd": "cargo run":交给系统 shell 执行,能复用你终端里的 PATH 和配置,成功率高得多 - 若坚持用
cmd,Windows 必须写绝对路径,例如:"cmd": ["C:\Users\xxx\.cargo\bin\cargo.exe", "run"] - 别漏掉
"shell": true(配合shell_cmd使用)或"selector": "source.rust"(确保只对 .rs 文件生效)
最容易被忽略的是:Rust 文件右下角状态栏必须显示 Rust,不是 Plain Text。Sublime 全靠这个标识匹配 source.rust,语法高亮、构建系统触发、LSP 都依赖它——不手动点选,其他配置全白搭。











