根本原因是sublime gui启动未加载shell配置导致path缺失;需先用控制台import os; print(os.environ.get('path'))验证ruby路径是否存在,再通过zsh -l -c(macos/linux)或硬编码ruby.exe绝对路径(windows)配置build system。

Ctrl+B报command not found: ruby,先看PATH有没有ruby
这不是Ruby没装好,是Sublime GUI启动时根本没加载你的shell配置(比如~/.zshrc),所以PATH里压根没有ruby路径。别猜,直接验证:
- 按
Ctrl+`打开Sublime控制台 - 输入
import os; print(os.environ.get('PATH')) - 检查输出里有没有你的ruby所在目录:macOS Homebrew通常是
/opt/homebrew/bin,rbenv是/Users/xxx/.rbenv/shims,Windows是C:Ruby32-x64in
没出现就说明环境没对上——后续所有配置都白搭。
Build System怎么写才真能跑ruby
裸写"shell_cmd": "ruby $file"在GUI下基本必挂。关键是要让shell初始化逻辑跑起来:
- 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"],反斜杠必须双写,路径不能含空格(如C:Program Files会静默失败) - 用rbenv又想保持版本灵活:
"shell_cmd": "/Users/xxx/.rbenv/shims/ruby "$file"",注意写绝对路径,~不会被解析
别信path字段能“补PATH”——它只影响子进程,解决不了shell初始化缺失的根本问题。
.rb文件打开还是Plain Text?手动绑定一次就永久生效
这不是插件失效,是Sublime根本没把文件当Ruby处理。它默认只对.rb扩展名做语法绑定,但首次打开时右下角可能仍显示“Plain Text”:
- 打开任意
.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支持,不用额外装Package Control里的旧版插件。
错误行双击跳不进去?file_regex配错了
构建输出报错时双击跳不到对应位置,大概率是file_regex不匹配Ruby实际输出格式:
- Ruby标准错误格式是:
test.rb:5:in `foo': undefined method `bar' (NoMethodError) - 推荐正则:
"file_regex": "^([^:]*):([0-9]+):?([0-9]*)",能正确提取文件名、行号、可选列号 - 别用默认的
^.*?:(d+):?(d+),它会漏掉Windows路径中的冒号(比如C: est.rb:5) - 这个字段必须加,否则构建失败后只能手动翻行号
最容易被忽略的是:GUI启动的Sublime不继承shell环境,哪怕你which ruby输出再漂亮,它也看不见——所以验证PATH是第一步,不是最后一步。











