Sublime Text 运行 Ruby 报错的根本原因是 GUI 环境未加载 shell 配置文件导致 PATH 不一致,需手动在 Settings–User 中配置 path;构建系统需自定义以支持交互式输入和正确编码。
Sublime Text 运行 Ruby 脚本报
根本原因不是 Sublime 本身没配 Ruby,而是它默认用的是系统 shell 的 PATH,而 macOS 或某些 Linux 桌面环境(比如 GNOME、KDE)下,GUI 应用启动时往往不加载
或
里的 PATH 修改。
先在终端里运行
,记下输出路径,比如
或
打开 Sublime Text →
Preferences → Settings – User
,在 JSON 里加一行:
(把上面
输出的目录父路径填进去,多个用英文冒号分隔)
Windows 用户注意:
要写成
这种双反斜杠格式,且确保该路径下真有
用 Build System 运行 Ruby 却卡住不动或没输出
这是 Sublime 默认的
构建器对交互式输入/输出处理得比较糙,尤其遇到
、
就会挂住 —— 它没给子进程连上真正的 TTY。
不要依赖默认的 Ruby build;手动建一个:
Tools → Build System → New Build System
粘贴以下内容(macOS/Linux):
Windows 用户把
那行换成:
保存为
,然后在右下角切换 Build System 为 Ruby
Sublime 提示
或语法报错
说明当前执行的 Ruby 版本太老(比如系统自带的 1.8.7),而你的代码用了 2.0+ 的特性。Sublime 不会自动识别项目级 Ruby 版本管理器(如
或
)的设置。
仿Sublime和notepad++编辑器效果
仿Sublime和notepad++编辑器效果
下载
检查终端里
和 Sublime 里
输出的
是否一致;不一致就说明 PATH 没生效
如果用了
,别只改
;还得在 Sublime 的
设置里显式加上
(注意展开成绝对路径,比如
)
用
的用户,建议直接用
生成固定路径的 ruby 可执行文件,再指向它,比折腾 shell 初始化更稳
中文路径或文件名下运行 Ruby 报
Sublime 在 Windows 上默认用系统 ANSI 编码读取文件路径,但 Ruby 解释器又按 UTF-8 解析,一碰中文就崩。macOS 相对好些,但某些 locale 设置不对也会触发。
最简单:把 Ruby 文件移到全英文路径下,比如
,避开问题
Windows 用户可在 Build System 的
前加编码声明:
(强制 CMD 切 UTF-8)
长期方案:在 Ruby 文件开头加
,并确保 Sublime 保存文件时也选 UTF-8(右下角点击编码名可切换)
Sublime 对 Ruby 的支持本质是“调外部解释器”,所有问题都绕不开路径、编码、shell 环境这三块。很多人卡在“为什么终端能跑,Sublime 就不行”,答案往往就藏在
和
的差异里。
command not found: ruby~/.bashrc~/.zshrcwhich ruby/usr/local/bin/ruby/opt/homebrew/bin/ruby"path": "/usr/local/bin:/opt/homebrew/bin"which rubypath"path": "C:\Ruby32-x64\bin"ruby.exeexecgetsSTDIN.read{
"shell_cmd": "ruby "$file"",
"file_regex": "^(...*?):([0-9]*):?([0-9]*)",
"selector": "source.ruby",
"variants": [
{
"name": "Run in Terminal",
"shell_cmd": "osascript -e 'tell app "Terminal" to do script "cd \"$PWD\" && ruby \"$file\""'"
}
]
}osascript"shell_cmd": "start cmd /c "cd /d "$file_path" && ruby "$file_name" & pause""Ruby.sublime-buildundefined method `require_relative'rbenvrvmruby -vBuildruby -vrbenv~/.zshrcpath~/.rbenv/shims/Users/xxx/.rbenv/shimsrvmrvm wrapperinvalid byte sequence in UTF-8~/code/test.rbshell_cmd"shell_cmd": "chcp 65001 >nul && ruby "$file""# encoding: utf-8which rubyecho $PATH