Sticky Scroll 是 VSCode 1.85+ 内置功能,滚动时将当前代码块声明行固定在编辑器顶部;默认关闭因早期性能与折叠错位问题,现稳定但未自动启用。

Sticky Scroll 是什么,为什么默认不开启
Sticky Scroll 不是插件,而是 VSCode 1.85+ 内置的原生功能,作用是在滚动时把当前代码块(比如函数、类、方法)的声明行“粘”在编辑器顶部,帮你一眼看清当前在哪个 function 或 class 里。它默认关闭,因为早期版本存在性能抖动和折叠区域错位问题,现在稳定了,但没开自动开关。
怎么打开 Sticky Scroll 并调出函数名固定栏
打开设置最直接:按 Ctrl+,(Windows/Linux)或 Cmd+,(macOS),搜 "sticky scroll",勾选 "Editor > Sticky Scroll: Enabled"。也可以手动改 settings.json:
"editor.stickyScroll.enabled": true
开启后不会立刻显示——它只在文件有明确代码结构(如含 function、class、if、for 等可折叠块)且编辑器高度足够时才生效。小文件、纯 JSON 或无缩进的脚本通常不触发。
常见失效原因和对应解法
- 语言模式不对:Sticky Scroll 依赖语言服务器提供的大纲(Outline)信息。如果当前文件是
Plain Text 模式,切到正确语言(比如 JavaScript、TypeScript、Python)再试
- 缩进不规范:Python 中用空格混 Tab、JS 中大括号换行不一致,会导致解析失败,
class A { 和 class A\n{ 在某些语言模式下识别效果不同
- 折叠被禁用:
"editor.folding": false 会连带让 Sticky Scroll 失效,保持默认 true
- 窗口太窄:Sticky Scroll 占用顶部空间,若编辑器宽度
它能“粘”哪些东西?和 Outline 视图什么关系
Plain Text 模式,切到正确语言(比如 JavaScript、TypeScript、Python)再试class A { 和 class A\n{ 在某些语言模式下识别效果不同"editor.folding": false 会连带让 Sticky Scroll 失效,保持默认 true
它粘的是当前光标所在位置向上最近的**可折叠区域头行**,优先级从高到低:类 > 方法/函数 > 条件块 > 循环块。不是所有语言都支持全部层级——比如 CSS 只支持 @media 和 @keyframes,HTML 基本不支持。
它和侧边 Outline 视图共用同一套大纲数据源,所以如果你在 Outline 里看不到函数列表,Sticky Scroll 也大概率不显示。检查语言服务器是否就绪(状态栏右下角看语言模式图标旁有没有“…”,或跑一下 Developer: Toggle Developer Tools 看控制台有无 OutlineProvider 报错)。
真正容易被忽略的是:Sticky Scroll 不随光标移动实时刷新,而是滚动停止约 200ms 后才更新。快速拖动滚动条时顶部会“卡住”,这不是 bug,是防抖策略——想即时响应就得关掉它,但代价是 CPU 占用明显升高。









