sublime text不编译rust,只调用cargo或rustc;ctrl+b无反应或“command not found”主因是path未透传、working_dir错误或file_regex未配——终端能运行≠sublime能调用,须验证控制台中subprocess.run(['cargo', '--version'])是否成功。

Sublime Text 本身不编译 Rust,它只调用 cargo 或 rustc;配置失败几乎全是环境变量没透传、working_dir 错了,或 file_regex 没配对——不是插件装少了。
为什么 Ctrl+B 按下去没反应,或者报 “command not found”
终端里 cargo --version 能跑 ≠ Sublime 里能调用。Sublime 启动时读的是自己的环境变量,不加载你的 ~/.zshrc 或系统 PATH(尤其 macOS 从 Dock 启动、Windows 未彻底重启编辑器时)。
- 按
Ctrl+`打开 Sublime 控制台,执行:import os; print(os.environ.get('PATH'))确认输出里含~/.cargo/bin(macOS/Linux)或%USERPROFILE%.cargoin(Windows) - macOS/Linux:确保
~/.cargo/bin已写入 shell 配置,并执行过source ~/.zshrc;更可靠的做法是用终端启动:subl . - Windows:把
%USERPROFILE%.cargoin加进「系统环境变量」(不是用户变量),加完必须右键任务栏图标 →「退出」,再重开 Sublime - 加
"shell": true到 Build System 是最省心的兜底方案——它让命令走 shell,能继承完整 PATH
Build System 中 working_dir 必须指向项目根目录
cargo run 只在含 Cargo.toml 的目录下有效。Sublime 默认用 ${file_path}(比如打开 src/main.rs 时是 src/ 目录),但 cargo 会直接报 error: no Cargo.toml file found。
- 务必写:
"working_dir": "${project_path:${folder}}",不是"${file_path}" - 打开项目时,用
File → Open Folder加载整个文件夹(含Cargo.toml),别只双击单个.rs文件 - 右键标签页 →
Reveal in Side Bar,确认当前视图是否在项目根目录层级
错误信息不能双击跳转?八成是 file_regex 没配或写错了
rustc/cargo 的错误行典型格式是:src/main.rs:2:5: error[E0308]: mismatched types。漏掉 file_regex,所有错误都只是纯文本日志,没法操作。
- Build System 中必须加:
"file_regex": "^(.+):([0-9]+):([0-9]+):\s*(.*)$"(注意反斜杠要双写) -
\s*不能写成s*,否则匹配失败 - 如果用
rustc编译单文件(如hello.rs),错误格式是hello.rs:1:1: error: ...,上面正则仍适用
单文件快速测试别硬套 cargo run
新建一个 hello.rs 就想立刻跑,又不想建完整 Cargo 项目?cargo run 在非项目目录下必然失败,但 rustc 可以直接编译:
- 写个极简 Build System:
{ "shell_cmd": "rustc $file_name -o ${file_base_name}", "working_dir": "${file_path}", "file_regex": "^(.+?):([0-9]+):([0-9]+):(.*)$", "selector": "source.rust" } - 保存后按
Ctrl+B,生成同名可执行文件,终端里运行即可 - 注意:这种写法不支持依赖,仅适合验证语法或小片段
真正卡住人的地方从来不是 JSON 写错几行,而是 Sublime 进程根本没见过 cargo,或者你点开的压根就不是项目根目录——先验证控制台里 import subprocess; subprocess.run(['cargo', '--version']) 能否成功,再动构建配置。











