sublime中“当前行高亮”由highlight_line控制,颜色需在.sublime-color-scheme的region.line规则中修改,与selection无关,且易被插件或ui主题干扰。

“选中行”其实是“当前行”,得开 highlight_line 开关
Sublime 里没有真正意义上的“选中多行背景高亮”功能——你拖选三行,只有光标所在的那一行会被高亮,这叫「当前行高亮」,不是「选中行高亮」。它由设置项 highlight_line 控制,必须显式开启,否则无论怎么改配色都没用。
打开 Preferences → Settings(右侧用户配置),加这一行:
"highlight_line": true
保存后立刻生效。注意:这只是开关,颜色仍由当前配色方案决定,不是设置里能调的。
- 如果开了但没反应,先确认是否在非编辑器视图(比如控制台、输出面板)——
highlight_line只作用于代码编辑区 - 某些语法定义(如 Markdown 或 JSON)会覆盖
region.line的 scope 渲染,导致高亮消失,换回纯文本语法可验证 -
highlight_line和line_highlight是两回事:line_highlight是旧版 UI 主题用的,Sublime Text 4+ 已弃用,写它无效
改当前行背景色,必须动 .sublime-color-scheme 文件里的 region.line
颜色定义不在设置里,也不在 UI 主题(.sublime-theme)中,只在当前启用的配色方案文件(.sublime-color-scheme)的 rules 数组里。找 scope 为 region.line 的规则,改它的 background。
实操路径:
- 按
Ctrl+Shift+P(Win/Linux)或Cmd+Shift+P(macOS),输入PackageResourceViewer: Open Resource,选你当前主题(如Monokai.sublime-color-scheme) - 在文件里搜索
"scope": "region.line";若没找到,就在"rules"数组末尾手动加一条:
{
"name": "Current Line",
"scope": "region.line",
"background": "#2f3337"
}
- 值必须是字符串,支持十六进制(
#RRGGBB)、hsl()、hsla();不支持rgba()或 8 位 hex(如#00000080会被忽略) - 改完保存,Sublime 会自动重载;若没变,检查是否误改了
globals区块——region.line必须在rules里才生效
别把 selection 和 region.line 搞混了
这是最常踩的坑:改了 selection 规则,以为是在调“当前行”,结果只是改了鼠标拖选时的文本背景色。两者完全独立:
-
region.line:整行背景,只随光标移动,不受多光标/折叠影响 -
selection:仅覆盖被选中的字符范围,空行、行首缩进、行尾空白都不包含在内 - 如果你同时开了
highlight_line又调了selection,两个background值最好有明显区分度,否则视觉上分不清“哪行是光标所在行”
验证方法:把光标放在某行中间,按 Ctrl+D 多选几个词,你会发现背景色分层出现——深的是 region.line,浅的是 selection。
第三方插件可能劫持高亮,优先排查 Highlight Line 类插件
很多用户改完 region.line 没反应,最后发现是插件干的。典型干扰源:
-
Highlight Line插件默认开启,它会用自己的 layer 绘制高亮,直接盖掉原生region.line -
BracketHighlighter启用highlight_line选项后,也会抢占渲染权 - 某些 UI 主题(如
Adaptive)会强制注入样式,绕过配色方案逻辑
排查建议:
- 临时禁用所有插件,只留默认配置,看高亮是否恢复
- 检查
Preferences → Package Settings里有没有插件提供了highlight_line或line_highlight相关开关 - 在
Preferences → Settings – UI中确认"theme"值不是"adaptive.sublime-theme"这类强干预型 UI 主题
真正生效的颜色,永远来自配色方案文件中 region.line 的 background,其他任何地方写的都只是开关或覆盖层。











