sublime text 原生不支持悬停行号高亮整行,需依赖 highlight line 插件实现;该插件通过监听 gutter hover 事件动态添加临时高亮,配置 highlight_style 为 “line” 即可生效。

sublime text 默认不支持悬停行号高亮整行
这不是一个开关能打开的功能,Sublime Text 原生没有 highlight_on_gutter_hover 这类配置项。所谓“光标经过行号时高亮整行”,实际是靠第三方插件模拟实现的——它监听鼠标在边栏(gutter)区域的移动事件,再动态给对应行添加临时高亮样式。
用 Highlight Line 插件实现最稳妥
目前唯一稳定、轻量、持续维护的方案是 Highlight Line 插件(作者:guilhermejacob)。它不依赖 UI 主题修改,也不污染语法高亮规则,只在鼠标悬停 gutter 时临时加一层背景色。
- 安装方式:通过 Package Control 搜索并安装
Highlight Line - 默认即启用,无需额外配置;如需调整颜色,编辑
Preferences → Package Settings → Highlight Line → Settings - 关键参数:
"highlight_style": "line"(必须为line,设成gutter只高亮行号区) - 注意:如果开启
"highlight_on_caret",光标所在行也会常驻高亮,和悬停行为叠加可能造成混淆
为什么不用自定义 CSS 或 Theme 修改?
有人尝试改 gutter.active 的 CSS 规则,或往 Widget.sublime-settings 里塞样式——这些方法要么完全无效,要么只对行号本身着色,无法影响正文区域。Sublime 的 gutter 悬停事件不触发视图重绘,也没有公开 API 让 CSS 响应行号 hover 状态。
- Theme 文件里的
gutter相关 class(如gutter、gutter active)仅控制行号背景,不联动正文 - 强行用
view.add_regions()在插件里监听on_hover并标记行,性能差且在快速滑动时严重滞后 - Sublime 4.4+ 虽新增了
gutter_hover事件,但仅传坐标,不带行号信息,解析需自行做像素→行号映射,极易出错
常见失效场景和检查点
装完插件没反应?大概率卡在这几个地方:
- 确认 Sublime 是最新版(
Highlight Line在 ST3 build 3211+ 和 ST4 全版本兼容,旧版可能漏事件) - 检查是否启用了其他干扰插件,比如
BracketHighlighter或SyncedSideBar,它们有时会劫持on_hover - 查看 console(
Ctrl+`)有无报错:AttributeError: 'NoneType' Object has no attribute 'window'表示插件加载时机异常,重启 Sublime 即可 - 确保鼠标确实悬停在行号数字上(不是行号左侧空白或断点图标),该插件对 hover 区域判断较严格
真正起作用的永远是那几行插件代码里的 on_hover 回调和 view.add_regions 调用——别的路子,基本绕不过去。