必须安装sublimelinter、rubocop及sublimelinter-rubocop三者并正确配置:sublimelinter为框架,rubocop需全局可执行且版本兼容,文件语法必须识别为source.ruby,否则lint不触发。

Ruby 语法纠错不是装一个插件就完事,得配齐 SublimeLinter、rubocop 和对应语言绑定三样东西,缺一不可。
SublimeLinter 是基础框架,不是“纠错插件”本身
SublimeLinter 只是提供错误提示的壳子,它不检查 Ruby 代码——它只负责把其他工具(比如 rubocop)的输出结果抓过来,标在行号旁边。没它,rubocop 的报错就只能打在控制台里,看不到红波浪线。
- 必须先装
SublimeLinter:按Ctrl+Shift+P→ 输入Package Control: Install Package→ 搜SublimeLinter并安装 - 装完后,
SublimeLinter默认禁用所有 linter,你得手动启用:菜单 →Preferences→Package Settings→SublimeLinter→Settings,在用户配置里加"linters": {"rubocop": {"disable": false}} - 别跳过这步:如果右下角没显示
Linter图标,或保存文件没反应,大概率是这里设成true或压根没写进去
rubocop 必须全局可执行,且版本兼容
SublimeLinter-rubocop 插件只是个胶水,它调的是你系统里已安装的 rubocop 命令。如果终端里跑 rubocop --version 报错,Sublime 也一样挂。
- 先确认
rubocop装好了:gem install rubocop(推荐用bundle exec rubocop的项目,得额外配路径) - 再装插件:
SublimeLinter-rubocop(注意名字带连字符,不是sublimelinter-rubocop或RuboCop) - 常见坑:
rbenv或rvm环境下,Sublime 不继承 shell 的 PATH,导致找不到rubocop—— 解决办法是用终端启动 Sublime:subl .,而不是双击图标 - 新版
rubocop(1.0+)默认关掉了某些旧规则,如果你依赖老风格(比如强制def后空格),得在项目根目录加.rubocop.yml并开启对应 Cop
语法识别必须是 source.ruby,否则 lint 不触发
即使 SublimeLinter 和 rubocop 都装好了,如果当前文件被识别成 Plain Text 或 HTML,linter 根本不会跑。
- 打开
.rb文件,看右下角是否显示Ruby;如果不是,点它 →Open all with current extension as…→ 选Ruby - 别选
Ruby on Rails或Ruby Haml,那些是其他插件提供的变体,SublimeLinter-rubocop只认source.ruby这个 scope - 验证方法:按
Ctrl+Shift+P→ 输入show scope→ 回车,光标处应显示source.ruby开头的字符串 - 如果总掉回
Plain Text,检查是否装了冲突插件(比如某个废弃的 Ruby 插件覆盖了语法定义),卸载后再试
真正卡住人的地方,往往不是插件没装全,而是 rubocop 在终端能跑、在 Sublime 里跑不了——那基本就是 PATH 或启动方式的问题。别反复重装插件,先开控制台(Ctrl+`)看有没有 Cannot find rubocop 这类报错,顺着它查比盲试快得多。











