Sublime控制台看不到rbenv路径,是因为GUI启动未加载~/.zshrc或~/.zprofile,导致rbenv的shims路径缺失;需先用import os; print(os.environ.get('PATH'))验证,再通过zsh -l -c或绝对路径配置Build System。

Sublime 控制台里看不到 rbenv 的 Ruby 路径?先验证环境可见性
按 Ctrl+` 打开 Sublime 控制台,执行:import os; print(os.environ.get('PATH'))
检查输出是否包含类似 /Users/xxx/.rbenv/shims 的路径。没有就说明 GUI 启动的 Sublime 根本没加载你的 ~/.zshrc 或 ~/.zprofile——rbenv 的 eval "$(rbenv init -)" 就没生效,后续所有配置都白搭。
Build System 必须用登录态 shell,不能裸写 ruby $file
直接写 "shell_cmd": "ruby $file" 在 GUI 下必然失败,因为子进程继承的是 Sublime 自己残缺的 PATH。正确做法是让 shell 主动加载 rbenv 环境:
- macOS / Linux(zsh 用户):
"shell_cmd": "zsh -l -c 'ruby \"$file\"'"——-l触发登录态,自动 source~/.zshrc - macOS / Linux(bash 用户):
"shell_cmd": "bash -l -c 'ruby \"$file\"'" - 想绕过 shell 初始化、更稳定?写死 shims 路径:
"shell_cmd": "/Users/xxx/.rbenv/shims/ruby \"$file\""——注意用绝对路径,~不会被解析
file_regex 不匹配 rbenv 输出格式,双击错误行就跳不进去
rbenv 下 ruby 报错格式和系统 ruby 一致,仍是标准格式:test.rb:5:in `foo': undefined method `bar' (NoMethodError)。但如果你用了自定义 file_regex 却漏掉冒号或括号,就会失效。最简稳配是:
"file_regex": "^([^:]*?):([0-9]+):(?:[0-9]+)?:?"
别加 "path" 字段试图“补 PATH”——它只影响子进程的 PATH 环境变量,解决不了 shell 初始化缺失这个根问题。
.rb 文件右下角还是 Plain Text?手动绑定语法一次就永久生效
这不是插件或配置失效,是 Sublime 默认不把 .rb 当 Ruby 处理。操作很简单:
- 打开任意
.rb文件 → 点右下角语言名(如Plain Text)→ 选Ruby - 点右侧出现的
Open all with current extension as…→ 确认
之后所有 .rb 文件都会自动高亮、缩进、匹配括号。非标准扩展名(如 .ru、.rake)也要同样操作。
rbenv 的核心在于 shims 目录动态代理 ruby 命令,而 Sublime GUI 启动时连这个目录都看不见——所以一切配置都得围绕“怎么让它看见”来设计,而不是去改 rbenv 本身。


















