Sublime Text滚动条“消失”实为overlay_scrollbar启用后的占位残留,需在用户设置中设"overlay_scrollbar": "disabled"并重启生效;所有样式调整须通过主题文件中的puck_control和scroll_box规则完成。

滚动条“消失”不是没加载,是 overlay 占位残留
Sublime Text 的右侧编辑区滚动条看似不见了,大概率不是主题没画,而是 overlay_scrollbar 被启用后,系统预留了一道固定宽度空白——滑块本身被缩到极细甚至透明,但占位还在。你调 layer0.inner_margin 再小,只要 "overlay_scrollbar": "enabled"(默认值),右侧就永远有一条约 12px 宽的不可点击灰带。
解决方法只有一条:在用户设置中明确禁用它:"overlay_scrollbar": "disabled"
注意拼写是 overlay_scrollbar,不是 overlay_scroll_bars——后者控制显示策略(system/overlay),前者才是开关。设错就完全无效。
- 改完保存,必须重启 Sublime 才生效(热重载不触发 overlay 占位重计算)
- macOS 用户尤其要检查:系统偏好设置 → 辅助功能 → 显示 → “淡出滚动条”若开启,会进一步加剧不可见感
- 禁用后,滚动条回归传统固定位置,此时再调
puck_control才真正起效
改 puck_control 前先确认主题文件路径和结构
Sublime 不读 Preferences.sublime-settings 里的尺寸参数,所有滚动条粗细、贴图、内边距都由当前启用的主题文件(.sublime-theme)定义。直接改用户设置里的 scroll_bar_width 或类似字段,全被忽略。
操作前务必确认两件事:
– 当前主题名在哪:打开 Preferences → Settings,看右侧 "theme" 字段值,比如 "Adaptive.sublime-theme"
– 主题文件在哪:菜单 Preferences → Browse Packages… → 进入对应主题目录(如 Theme - Adaptive/),或直接去 Packages/User/ 下找同名覆盖文件
- 不要在
Packages/Default/下硬改,升级时会被覆盖 - 优先在
Packages/User/下建同名文件覆盖,安全可逆 - 搜索
"class": "puck_control",只改不含"attributes": ["horizontal"]的垂直滚动条规则
puck_control 必须同步调 layer0.inner_margin 和贴图
只改 layer0.inner_margin 数值,滑块会被拉伸变形;只换贴图不调 margin,宽度几乎不变。两者必须协同动作,否则滚动条要么糊成一片,要么细得点不动。
典型有效配置片段:{"class": "puck_control", "layer0.inner_margin": 1, "layer0.texture": "User/theme_override/scroll_puck.png"}
-
layer0.inner_margin推荐从2试起,逐步降到0或1;设为0时务必保证贴图宽度 ≤ 6px,否则裁切失真 -
scroll_puck.png必须放Packages/User/theme_override/下,高度保持 24–32px,PNG 透明底 - 改完保存,重启 Sublime —— 主题引擎不支持热重载该类修改
侧边栏滚动条变细?盯住 scroll_box 的 content_margin
侧边栏(文件树)滚动条和编辑区互不影响,它由 scroll_box 规则控制,关键字段是 content_margin,格式为 [left, top, right, bottom]。这个值越小,滑块视觉上越宽;设太大(如 [8, 8, 8, 8])会让滑块缩成一条线,拖拽热区失效。
操作步骤:
– 在主题文件里搜索 "class": "scroll_box"
– 优先找带 "attributes": ["sidebar"] 的 rule;找不到就改最通用的那个
– 把 content_margin 改成 [1, 1, 1, 1] 或 [0, 0, 0, 0]
- 别设
[0, 0, 0, 0]后直接保存——先备份原文件,误删逗号或括号会导致整个 UI 崩溃 - 改完无需重启,切一次配色方案(
Color Scheme)就能热刷新 - 某些主题(如 Material Theme)把侧边栏滚动条归到
scroll_bar_control,但 Sublime 主题引擎根本不识别这个 key,改了也白改
真正卡住人的地方不在代码怎么写,而在改完后忘了关 overlay_scrollbar,或者贴图尺寸不对却反复调 margin。滚动条这事,Sublime 的底层逻辑很硬:它不画,只调度;你调的不是控件,是主题渲染指令。稍一错位,就只剩空白占位。


















