必须分别配置editor.smoothscrolling(控制跳转滚动动画)和editor.cursorblinking(控制光标闪烁模式);前者仅对ctrl+g等跳转操作生效,需手动在settings.json中设为true并排除工作区覆盖、macos惯性滚动及远程gpu限制;后者只接受blink/smooth/phase等固定字符串值,不调节频率,且终端光标需单独配置。

平滑滚动和光标闪烁是两个独立开关,必须分别配置且不能互相替代;开了 editor.smoothScrolling 不代表光标会“平滑移动”,开了 editor.cursorBlinking 也不影响滚动动画。
怎么正确启用编辑器平滑滚动
VSCode 的平滑滚动只在键盘跳转类操作中生效(如 Ctrl+G 跳行、Ctrl+Click 跳定义),鼠标滚轮默认不触发——这不是 bug,是设计如此。
- 必须手动编辑
settings.json,添加:"editor.smoothScrolling": true;GUI 设置界面勾选可能被工作区覆盖,不可靠 - 若已打开工作区,请检查
.vscode/settings.json是否含"editor.smoothScrolling": false,删掉或改为true - macOS 用户需关闭系统级「惯性滚动」(系统设置 → 辅助功能 → 指针控制 → 触控板选项),否则动画撕裂或卡顿
- 远程开发(WSL/SSH)下,若控制台报
Failed to create WebGL context,说明 GPU 加速未启用,需加启动参数--enable-gpu
光标闪烁效果不是“调快慢”,而是选模式
editor.cursorBlinking 不接受毫秒值,只认固定字符串:它没有“频率调节”,只有形态切换。
- 可选值:
"blink"(默认闪烁)、"smooth"(淡入淡出,需 VSCode ≥1.85)、"phase"(横向扫过)、"expand"(中心扩散)、"solid"(不闪)、"off"(完全关闭) -
"smooth"是 CSS opacity 动画,节奏硬编码,无法调速;低对比度主题下可能难察觉,建议同步配"editorCursor.foreground"颜色 - 别写成
"false"或false——非法值会被静默忽略,回退到"blink" - Vim/Emacs 类插件常劫持光标逻辑,如果改了没反应,先禁用插件再试
终端光标和编辑器光标完全无关
内置终端(Ctrl+` 打开的那个)的光标样式、是否闪烁,由两组独立配置控制,编辑器设置对它无效。
- 形状控制:
"terminal.integrated.cursorStyle",值同编辑器("line"/"block"/"underline") - 是否闪烁:
"terminal.integrated.cursorBlinking",仅接受布尔值true/false,不支持"smooth"等动画 - 终端光标宽度和颜色无法自定义,只能靠调大字体或增强背景对比度来提升识别度
最容易被忽略的是:工作区设置会覆盖用户设置,而 Vim 插件可能在运行时动态重写光标样式——哪怕你全配对了,也得先关插件、清工作区配置,才能确认是不是真生效。











