ctrl+b 无反应需先确认 ruby 是否在系统 path 中;若终端执行 ruby --version 报错,则 sublime 同样找不到 ruby,mac 用户使用 rbenv/rvm 时尤需注意其未全局注入 path,应通过 tools → build system → new build system 手动指定 ruby 路径并配置正确 shell_cmd。

Sublime Text 里点 Ctrl+B 没反应?先确认 Ruby 是否在系统 PATH 里
Sublime 默认用 build_system 调 ruby 命令,如果终端里输 ruby --version 报 command not found,那 Sublime 肯定也找不到。Mac 上用 rbenv/rvm 管理 Ruby 的人最容易踩这个坑——它们默认不把 Ruby 加进全局 PATH,只在 shell 启动时注入。
- 在终端执行
which ruby,记下完整路径(比如/Users/xxx/.rbenv/shims/ruby或/opt/homebrew/bin/ruby) - Sublime 不读 shell 的
.zshrc,得手动告诉它用哪个 Ruby:菜单Tools → Build System → New Build System…,填入:
{
"shell_cmd": "/Users/xxx/.rbenv/shims/ruby \"${file}\"",
"file_regex": "^(...*?):([0-9]*):?([0-9]*)",
"selector": "source.ruby"
}
注意替换 /Users/xxx/.rbenv/shims/ruby 成你自己的路径;${file} 是当前文件路径,别漏了引号,否则含空格的路径会崩。
运行时报 LoadError: cannot load such file?Ruby 加载路径没对上
Sublime 的构建环境是干净的,不继承你当前终端的 GEM_HOME、GEM_PATH 或 require_relative 的上下文。哪怕脚本在终端能跑,换到 Sublime 就可能找不到本地 lib/ 或 gem。
- 检查报错行是不是
require './xxx'或require_relative—— 这类路径是相对于当前工作目录的,而 Sublime 默认以项目根目录为工作目录,不是文件所在目录 - 临时解决:改用绝对路径或显式设置
$LOAD_PATH,比如开头加$LOAD_PATH - 长期建议:别依赖相对 require,用
bundle exec ruby配合Gemfile,构建命令改成:"shell_cmd": "cd \"${project_path:.}\" && bundle exec ruby \"${file}\""
中文输出乱码或报 Encoding::CompatibilityError
Windows 用户最常遇到,Ruby 脚本里有中文字符串,Sublime 构建结果窗口显示 或直接崩溃。这不是 Ruby 版本问题,是 Sublime 的 build output 编码和 Ruby 解释器默认编码不一致。
- Sublime 的构建输出默认按系统 locale 解码(Windows 上常是 GBK),但 Ruby 2.4+ 默认用 UTF-8
- 简单粗暴解法:在 Ruby 脚本第一行加
# encoding: utf-8,并确保文件本身存为 UTF-8(无 BOM) - 更稳方案:强制 Ruby 输出用系统编码,比如 Windows 上加
puts '你好'.encode(Encoding.find('locale')),但治标不治本 - 终极建议:换用
Terminus插件替代原生 build,它复用真实终端,编码天然一致
想调试断点、看变量值?Sublime 本身不支持 Ruby debugger
Sublime 是编辑器,不是 IDE。它没有 Ruby 的交互式调试器(byebug/pry-byebug)集成能力,binding.pry 或 byebug 在构建中会卡住、没输入响应,因为 build system 是单向管道,不提供 TTY。
- 别在
build_system里跑带binding.pry的脚本——它会挂住,还得杀进程 - 真要调试,就回到终端:
cd到文件目录,手动跑ruby xxx.rb或bundle exec pry -r ./xxx.rb - 如果非要图形化调试,用 VS Code +
ruby-rdbg扩展,比折腾 Sublime 省心得多
Ruby 脚本运行的本质是「让系统找到 ruby 可执行文件,并传入正确的路径、编码、环境变量」。Sublime 只负责触发这一步,其余全靠你铺好路。路径、编码、加载上下文,三者错一个,就卡在看似莫名其妙的地方。










