Sublime Text 运行 Ruby 的核心是三件事:确保 ruby 命令可访问、.rb 文件正确语法高亮、错误行双击跳转;需按系统差异配置 PATH 和 Build System,手动绑定 .rb 语法,且 $file 不自动保存、跨文件跳转不可靠。

Sublime Text 跑 Ruby 不需要装一堆插件,核心就三件事:让 ruby 命令能被找到、.rb 文件正确高亮、错误行双击能跳转。跨平台配置的关键不是统一写法,而是各自绕过系统差异——macOS/Linux 用登录态 shell 加载环境,Windows 必须硬编码路径。
验证 Sublime 是否真能看到 ruby
别猜 PATH 有没有,直接看它进程里实际加载的值:
按 Ctrl+` 打开控制台,输入: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-x64\bin(注意是反斜杠,且必须在「系统变量」PATH 中)
没出现?说明 Sublime GUI 启动时压根没读你的 ~/.zshrc 或系统环境变量,后续所有构建配置都白搭。
Build System 怎么写才跨平台有效
不能共用一套 JSON,必须按系统区分写法,否则 Ctrl+B 一定挂:
macOS / Linux(zsh 用户,Catalina+ 默认):"shell_cmd": "zsh -l -c 'ruby \"$file\"'"
关键点:-l 触发登录态,自动 source ~/.zshrc,rbenv 和 rvm 都能识别;单双引号嵌套必须严格,否则含空格路径崩。
Windows:"cmd": ["C:\Ruby32-x64\bin\ruby.exe", "$file"]
关键点:反斜杠必须双写;路径不能含空格(如 C:\Program Files 会静默失败);右键 ruby.exe 属性里看「位置」字段最准,别凭记忆写。
通用必填项:"file_regex": "^([^:]*?):([0-9]+):(?:[0-9]+)?:?.*" —— Ruby 错误格式是 test.rb:5:in `foo': ...,这个正则才能让双击跳转生效;"selector": "source.ruby" —— 绑定语法作用域,影响快捷键和缩进行为。
.rb 文件打开还是 Plain Text?手动绑定一次就够了
这不是插件问题,也不是配置失效,是 Sublime 默认不主动把扩展名和语法关联上:
打开任意 .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 不会自动保存再运行。你改了代码但没按 Ctrl+S,执行的仍是磁盘上的旧版本。没有“保存并运行”快捷键,得自己养成习惯。
第二:跨文件跳转(比如按 F12 跳到 lib/ 下的方法)基本不可靠。SublimeCodeIntel 这类插件依赖源码解析和缓存,对 zeitwerk 或自定义 autoload_paths 无能为力;真正稳定的方案是 Cmd+Shift+O 全局搜文件名,而不是强求跳转。


















