VSCode光标形状由editor.cursorStyle控制,仅支持line、block、underline、line-thin、block-outline、underline-thin六种字符串值,大小写、引号、版本兼容性均需严格匹配;粗细通过editor.cursorWidth调节(推荐2或3),仅对line类生效;闪烁由editor.cursorBlinking控制,合法值为blink、smooth、phase、expand、solid五种。

光标形状怎么设:用 editor.cursorStyle 控制六种模式
VSCode 不会根据语言、主题或文件类型自动切换光标形态,全靠 editor.cursorStyle 手动指定。它只接受六个固定字符串值,写错大小写、漏引号或加布尔值都会静默失效。
-
"line":默认竖线,1 像素宽,在高 DPI 屏或小字号下容易“丢光标” -
"block":实心方块,盲打定位最稳;但搭配深色主题时边缘可能发虚 -
"underline":仅在当前字符下方画横线,遇到空格或 Tab 就断开,常被误判为“光标消失” -
"line-thin"和"underline-thin":仅 VSCode ≥1.80 支持 -
"block-outline":仅 ≥1.79 支持,旧版本会回退到"line"
别写成 block(漏引号)、"BLOCK"(大小写错)或 true——这些都不生效。
光标太细看不清?直接调 editor.cursorWidth
默认值是 1,实际就是一条几乎隐形的像素线。尤其在 macOS Retina 屏、Windows 高 DPI 缩放或字体小于 12px 时,极易丢失焦点。
- 推荐从
2起步,3在等宽字体(如 Fira Code、JetBrains Mono)下依然干净 - 该值只影响
"line"和"line-thin"的粗细,对"block"形状无效 -
0或负数会被忽略,不报错也不生效 - 超过
5后,若启用连字(editor.fontLigatures: true),可能遮挡==或=>等符号细节
关闪烁还是换动画?editor.cursorBlinking 的五个合法值
这不是布尔开关,也不是毫秒级节奏控制器。它只接受五个固定字符串:"blink"、"smooth"、"phase"、"expand"、"solid"。写错就退回默认 "blink"。
-
"solid"是唯一真正实现“常亮不闪”的方式,不是隐藏,而是把动画压成一帧 -
"smooth"和"phase"在部分显卡驱动下不同步,macOS 上若同时启用editor.smoothScrolling,还可能拖影 -
"off"在部分版本中存在,但不稳定;false、"false"、0全部无效 - Vim 插件(如
vscode-vim)会动态接管该配置,在 normal/insert 模式间切换光标行为,手动设的值可能被覆盖
颜色和终端光标要单独配,不能混用
编辑器光标颜色必须走 workbench.colorCustomizations,字段名是 editorCursor.foreground,值用十六进制如 "#ff4d4d";写错格式(如漏 # 或位数不对)会导致整个 workbench.colorCustomizations 失效。
- 终端光标完全独立,编辑器设置对它毫无影响
- 改终端光标得单独设
terminal.integrated.cursorStyle(只支持"block"、"underline"、"line")和terminal.integrated.cursorBlinking - 工作区设置(
.vscode/settings.json)优先级高于用户设置,右下角显示 “Workspace” 就说明你正被它覆盖
最容易被忽略的是覆盖链:工作区设置 > 用户设置 > 默认值;Vim 插件和终端面板也会悄悄干扰,验证前最好先关掉它们。


















