VSCode平滑滚动需同时配置editor.smoothScrolling和editor.cursorSmoothCaretAnimation为true,且须通过settings.json手动设置、避免工作区覆盖,macOS需关闭系统惯性滚动,远程开发需启用GPU加速,侧边栏等区域需单独开启list.smoothScrolling。

VSCode 的平滑滚动不是开个开关就能用的,它依赖三项独立配置,且容易被覆盖、被系统干扰、被远程环境禁用——直接改 settings.json 是唯一可靠路径。
为什么勾选设置界面里的「Smooth scrolling」没反应?
VSCode 设置 UI 显示的「Smooth scrolling」只是对 editor.smoothScrolling 的可视化代理,但它不保证生效:工作区设置、扩展覆盖、甚至旧版插件都可能悄悄把它设为 false。
- 打开命令面板(
Ctrl+Shift+P或Cmd+Shift+P),执行Preferences: Open Settings (JSON) - 确认存在且未被注释的行:
"editor.smoothScrolling": true - 如果该键出现多次(比如用户级和工作区级同时存在),删掉工作区级那一行——工作区设置优先级更高,会盖掉用户设置
- 改完保存,重启 VSCode;别只靠重载窗口,GPU 渲染上下文可能没刷新
macOS 触控板滚动卡顿或跳帧?关掉系统惯性滚动
macOS 的原生惯性滚动和 VSCode 的软件插值动画节奏不一致,叠加后会出现视觉撕裂、延迟响应或中途断动画。这不是 VSCode Bug,是渲染层冲突。
- 前往「系统设置 → 辅助功能 → 指针控制 → 触控板选项」,取消勾选「惯性滚动」
- 顺手检查「自然滚动」是否开启——若开启,也建议关闭,它会让触控板方向与编辑器预期相反
- 重启 VSCode 后仍卡顿?可微调
"editor.mouseWheelScrollSensitivity": 1.2(默认1.0),让滚轮步长更贴合动画节奏
远程开发(WSL/SSH)下滚动无动画?启用 GPU 加速是前提
VSCode 远程模式默认禁用硬件加速,而 editor.smoothScrolling 在无 WebGL 上下文时会自动退化为普通跳转——你设了 true,但根本不会触发 Canvas 动画路径。
- 在远程 VSCode 中按
Ctrl+Shift+P,执行Developer: Toggle Developer Tools - 切换到 Console 标签页,看是否有
Failed to create WebGL context报错 - 若有,需在远程机器的 VSCode 启动参数中加
--enable-features=SmoothScrolling --enable-gpu(WSL 可通过wsl.conf配置 GUI 启动参数;SSH 则需修改服务器端的 VSCode Server 启动脚本) - 注意:低配云服务器或虚拟机可能不支持 WebGL,此时只能接受无动画滚动
光标跳转不平滑?editor.smoothScrolling 和 editor.cursorSmoothCaretAnimation 必须同时开
editor.smoothScrolling 只管「视口滚动过渡」(比如 Ctrl+G 跳行、Ctrl+Click 跳定义),不管光标本身形态变化;真正让光标淡入缩放、有缓动效果的是 editor.cursorSmoothCaretAnimation(VSCode 1.86+ 引入)。
- 两者必须都设为
true才算完整平滑体验 - 键盘方向键逐字符移动永远无动画——这是设计如此,不是配置问题
- 如果你用的是 Vim 插件(如 VSCodeVim 或 Neovim 集成),
cursorSmoothCaretAnimation可能被插件接管或禁用,需查对应插件文档确认兼容性
最常被忽略的一点:平滑滚动只作用于编辑器主区域,不影响侧边栏树、搜索结果列表或终端——那些需要单独开 list.smoothScrolling;而 PageUp/PageDown 键走的是页面跳跃逻辑,天生无动画,改设置也无效。


















