sublime text运行ruby需满足三点:path中能找到ruby命令、.rb文件绑定为source.ruby语法、file_regex匹配ruby错误格式;否则ctrl+b会静默失败或报错。

Sublime Text 能跑 Ruby,但默认几乎什么都干不了——它不自带解释器、不自动识别 .rb 文件、不加载你的 shell 环境。配置成功只取决于三件事:ruby 命令能否被找到、文件是否被当作 source.ruby 处理、错误输出能否定位到行号。其余都是干扰项。
Ctrl+B 报 “command not found: ruby” 怎么办
这不是 Ruby 没装,是 Sublime GUI 进程根本没读你的 ~/.zshrc 或系统 PATH。终端里 ruby -v 再正常,它也看不见。
- 先验证:按
Ctrl+`打开控制台,运行import os; print(os.environ.get('PATH')),看输出里有没有/opt/homebrew/bin(macOS Homebrew)、/Users/xxx/.rbenv/shims(rbenv)或C:Ruby32-x64in(Windows) - macOS/Linux 推荐用登录态 shell 加载环境:
"shell_cmd": "zsh -l -c "ruby '$file'""(-l触发~/.zshrc加载,rbenv和rvm自动生效) - Windows 必须写死路径:
"cmd": ["C:\Ruby32-x64\bin\ruby.exe", "$file"](反斜杠双写,路径不能含空格,否则静默失败) - 别用
"path"字段试图“补 PATH”——它只影响子进程,解决不了 shell 初始化缺失这个根问题 - 绝对不要点
Tools → Build With → Ruby,那是 Sublime 2 硬编码的过时选项,路径早失效
.rb 文件打开还是 Plain Text
Sublime 不会自动把 .rb 当 Ruby 处理,这不是插件缺失,是语法绑定没触发。
- 打开任意
.rb文件 → 点右下角语言名(如 “Plain Text”)→ 选Ruby - 紧接着点右侧出现的
Open all with current extension as…→ 确认选Ruby - 之后所有
.rb文件都会自动高亮、缩进、括号匹配 - 如果用
.ru、.rake或.gemspec,要单独对每个扩展名重复上述操作 - Sublime Text 4 自带 Ruby 支持,不需要装 Package Control 里的旧版
Ruby插件
构建输出双击跳不到错误行
报错信息显示了 test.rb:5:in `foo': undefined method `bar',但双击没反应——基本是 file_regex 没配对 Ruby 的实际输出格式。
- Ruby 标准错误格式是:
文件名:行号:列号:消息,比如app.rb:12:in `run': undefined local variable - 推荐正则:
"file_regex": "^([^:]*):([0-9]+):?([0-9]*)"(能正确提取文件名、行号、可选列号,兼容 Windows 路径中的冒号) - 别用默认的
"^.*?:([0-9]+):?([0-9]+)",它漏掉文件名,双击后光标停在第一行 - 这个字段必须加,否则构建失败后只能手动翻行号
- 确保 Build System 里有
"selector": "source.ruby",否则语法高亮和构建逻辑会脱节
最常被跳过的动作是验证 PATH ——哪怕你 which ruby 输出再漂亮,Sublime GUI 启动时也看不到。所有后续配置都建立在这个前提上,不是可选项。











