Sublime Text 不支持 Ruby 调试,因无内置 debugger 且外部插件多已失效;最可靠方式是终端中用 pry(binding.pry)交互调试,或通过 Terminus 插件在 Sublime 内嵌终端运行。

Sublime Text 本身不支持 Ruby 调试(没有内置 debugger 或断点支持),所谓“调试”必须依赖外部工具 + 插件桥接,且绝大多数方案在 2026 年已失效或维护停滞。直接上 pry 或 byebug 断点 + 终端交互是最可靠路径。
为什么不能用 Sublime 的 Build System 调试
Build System 只能执行命令、捕获 stdout/stderr,无法响应断点、单步、变量查看等调试行为。你看到的 ruby -r byebug script.rb 在 Sublime 里运行后卡住、无输入响应,是因为 Sublime 的构建输出面板不提供交互式 stdin(即不能敲 c 继续、n 下一行)。
-
SublimeLinter-rubocop只做静态检查,不是调试器 -
SublimeCodeIntel提供跳转和补全,但不介入运行时 - 旧版
SublimeRubyDebugger插件早已不兼容 ST4,GitHub 仓库已归档
可行的调试替代方案:pry + terminal
放弃“在 Sublime 里点个按钮就进调试器”的幻想,改用轻量组合:编辑用 Sublime,调试用终端 + pry。这是目前 macOS/Linux/Windows 上最稳定、零配置冲突的做法。
- 确保已安装
pry:gem install pry(若用rbenv,确认rbenv shell 3.2.2后再装) - 在 Ruby 文件中插入断点:
binding.pry(放在你想暂停的行) - 在项目根目录打开终端,运行:
ruby your_script.rb—— 执行会停在binding.pry,进入交互式 REPL - 在终端里可查变量、调方法、
exit继续执行,比图形化调试器更直接
如果非要嵌入 Sublime:Terminus + 自定义 build
借助 Terminus 插件(需通过 Package Control 安装),可让 Sublime 内建终端接管 Ruby 运行,从而支持交互式调试。这不是“Sublime 调试”,而是“在 Sublime 里开个终端跑 Ruby”。
- 安装
Terminus后,按Ctrl+Shift+P→ 输入Terminus: Open Default Shell in Panel - 在该面板中手动执行:
ruby -r pry -I . your_script.rb - 若想一键触发,可新建一个 build system:
{"cmd": ["terminus_open", "--cwd", "$file_path", "--cmd", "ruby -r pry -I . $file"]}—— 但注意这需要Terminus的 Python API 支持,且terminus_open不是标准 build 命令,实际需配合 key binding 或插件命令调用
容易被忽略的 PATH 和 ruby 版本错位问题
即使 pry 装好了,在 Sublime 的 Terminus 面板里仍可能报 cannot load such file -- pry,根本原因不是没装,而是 Terminus 启动时读取的 shell 环境与你的终端不一致(比如它默认调用 /bin/sh,而你的 rbenv 初始化只写在 ~/.zshrc 里)。
- 解决办法:在
Terminus设置中显式指定 shell 路径,例如:"shell_cmd": ["/bin/zsh", "-i", "-c", "ruby -r pry -I . $file"] - macOS 用户尤其注意:如果用了 Apple Silicon,
/usr/local/bin/ruby可能指向系统旧版,而rbenv的 shims 在/Users/yourname/.rbenv/shims,这个路径必须出现在PATH中,且Terminus的 shell 必须加载对应 profile
真正卡住人的从来不是“怎么配”,而是误以为 Sublime 能像 VS Code 那样一键 attach 到 Ruby 进程 —— 它不能。接受终端交互式调试,反而省掉一堆过时插件和环境变量胶水代码。


















