sublime按ctrl+b报“command not found: ruby”是因gui进程未加载shell环境变量导致path缺失;需先用import os; print(os.environ.get('path'))验证,再通过zsh -l -c(macos/linux)或绝对路径(windows)配置build system,并手动绑定.rb语法。

Sublime Text 按 Ctrl+B 报 command not found: ruby,不是 Ruby 没装,而是 Sublime GUI 进程压根没加载你的 shell 环境(比如 ~/.zshrc),PATH 为空——这是 90% 配置失败的唯一原因。
怎么验证 Sublime 真的看不到 ruby
别猜,直接看它实际用的环境变量:
- 按
Ctrl+`打开 Sublime 控制台 - 输入
import os; print(os.environ.get('PATH')) - 检查输出里有没有你的 Ruby 路径:
— macOS Apple Silicon:/opt/homebrew/bin或/Users/xxx/.rbenv/shims
— macOS Intel:/usr/local/bin
— Windows:C:Ruby32-x64in(注意是反斜杠,且该路径必须在「系统变量」PATH 中)
如果没出现,后续所有构建配置都白搭。
Build System 必须绕过 shell 初始化缺失
裸写 "cmd": ["ruby", "$file"] 在 GUI 下必挂;关键是要让 rbenv/rvm 或系统 PATH 生效:
- macOS/Linux(zsh 用户,Catalina+ 默认):
"shell_cmd": "zsh -l -c 'ruby "$file"'"
—-l表示登录态,自动 source~/.zshrc,rbenv 和 rvm 都能识别
— 单双引号嵌套必须严格,否则含空格路径会崩 - macOS/Linux(bash 用户):
"shell_cmd": "bash -l -c 'ruby "$file"'" - Windows:
"cmd": ["C:\Ruby32-x64\bin\ruby.exe", "$file"]
— 反斜杠必须双写,JSON 才能解析
— 路径不能含空格(如C:Program Files会静默失败);右键ruby.exe→ 属性 → 「位置」字段最准 - 用 rbenv 且想保持版本灵活:
"shell_cmd": "/Users/xxx/.rbenv/shims/ruby "$file""
— 写绝对路径,~不会被 Sublime 解析
为什么 .rb 文件打开还是 Plain Text
这不是插件问题,是 Sublime 没把文件当 Ruby 处理:
- 首次打开任意
.rb文件,右下角显示 “Plain Text”,点它 → 选Ruby - 再点右侧弹出的
Open all with current extension as…,之后所有.rb文件都会自动高亮、缩进、匹配括号 - 自定义扩展名(如
.ru、.rake)也要同样手动绑定:View → Syntax → Open all with current extension as…
Sublime Text 4 自带 Ruby 支持,不用装旧版 Ruby 插件。
错误行双击跳不进去?file_regex 必须匹配真实输出
Ruby 错误标准格式是 test.rb:5:in `foo': undefined method `bar' (NoMethodError)。如果 file_regex 不匹配,双击就无效:
- 用这个最稳:
"file_regex": "^([^:]*?):([0-9]+):(?:[0-9]+)?:?.*" - 别漏掉这个字段,否则构建失败后只能手动翻行号
- 不要加
"path"字段试图“补 PATH”——它只影响子进程环境变量,解决不了 shell 初始化缺失的根本问题
构建系统保存为 Ruby.sublime-build,放在 Packages/User/ 目录下即可;Tools → Build System → Ruby 启用它。记住:Sublime 不会在运行前自动保存文件,Ctrl+S 必须手动按。











