Sublime Text滚动条宽度由主题文件控制,需修改puck_control的layer0.inner_margin和贴图尺寸,并禁用overlay_scrollbar以消除空白,同时确保滑块颜色对比度足够。

Sublime 的滚动条宽度由 theme 文件控制,不是设置项
Sublime Text 没有像 VSCode 那样的 workbench.scrollbarSize 这类全局配置项。它的滚动条(包括宽度、颜色、贴图)完全由当前启用的主题文件(.sublime-theme)定义,修改的是 UI 渲染层,不是行为逻辑。所以想“调窄”,不能搜“设置”或改 Preferences.sublime-settings,得进主题文件动结构。
改 puck_control 的 layer0.inner_margin 和贴图尺寸
滚动条滑块(puck)的视觉宽度主要受两个因素影响:贴图文件本身的像素宽 + layer0.inner_margin 的内边距压缩。常见错误是只调 margin 却没换贴图,结果滑块被拉伸变形。
- 先确认你用的是哪个主题:打开
Preferences → Settings – User,看"theme"字段值(如"Adaptive.sublime-theme") - 去
Packages/目录下找到对应主题文件(或直接在Packages/User/新建同名覆盖文件) - 搜索
"class": "puck_control",找到垂直方向那段(不含"attributes": ["horizontal"]) - 添加或修改这两项:
[{ "class": "puck_control", "layer0.inner_margin": 1, "layer0.texture": "User/theme_override/scroll_puck.png" }] -
layer0.inner_margin值越小,滑块越窄;设为0是极限(但可能难拖拽) - 同时必须准备一张窄贴图:
scroll_puck.png宽度建议 ≤ 6px(高度保持 24–32px),放在Packages/User/theme_override/下
别漏掉 overlay_scrollbar 这个隐形占位符
即使你把滑块缩到最细,右侧仍可能有一道固定宽度的空白——那是 Sublime 为 overlay 滚动条预留的空间。它不显示滑块,但会占位,尤其在 macOS 或某些 GTK 环境下默认开启。
- 在控制台(
Ctrl+`)运行:sublime.active_window().active_view().settings().get('overlay_scrollbar') - 若返回
"enabled"或true,就在用户设置中加一行:"overlay_scrollbar": "disabled" - 这个设置生效后,右侧空白会彻底消失,滚动条只在 hover 或拖拽时浮现(前提是主题支持 overlay)
- 注意:
"overlay_scrollbar": "disabled"不等于隐藏滚动条,只是关掉“悬浮式”渲染模式,回归传统常驻样式
深色主题下容易忽略颜色对比度问题
把滚动条调窄之后,如果颜色和背景太接近(比如深灰滑块配黑色主题),它就变成一道“隐形线”,根本找不到在哪点拖。这不是宽度问题,是可操作性断层。
- 不要只调
layer0.tint,优先保证layer0.opacity≥0.85,避免透明度过高 - 推荐用带 alpha 的浅灰:
"layer0.tint": [200, 200, 200, 180](第四个值是 alpha,范围 0–255) - 如果主题本身禁用了
layer0.tint(比如用了纯 texture 贴图),那就必须重做scroll_puck.png,确保贴图本身有足够明度 - 测试方法:在编辑器里打开一个超长文件,快速滚到底部再回拉——滑块是否清晰可见、能否精准点中?这才是窄滚动条是否真正可用的判断标准
真正麻烦的不是改哪几行代码,而是 theme 文件里 class 层级嵌套、layer 叠加顺序、以及 overlay 与非 overlay 模式的切换逻辑混在一起。改完不生效?八成是 class 名写错、贴图路径不对、或者被第三方主题的更高优先级 rule 覆盖了。先从 Packages/User/Default.sublime-theme 开始最小化验证,别一上来就动大主题。











