vscode光标形状需通过editor.cursorstyle硬指定,仅支持"line"、"block"、"underline"、"line-thin"、"block-outline"、"underline-thin"六个字符串值,大小写、引号、版本兼容性及配置位置(如工作区覆盖用户设置)任一出错均静默失效。

直接改 editor.cursorStyle 就行,但必须写对值、写对位置,否则静默失效。
光标形状怎么设才生效
VSCode 不会根据语言或主题自动切换光标形态,全靠 editor.cursorStyle 硬指定。它只接受 6 个固定字符串值:"line"、"block"、"underline"、"line-thin"、"block-outline"、"underline-thin"。
- 别写成
true、block(漏引号)、"BLOCK"(大小写错)——这些都无效 -
"line-thin"和"block-outline"分别要求 VSCode ≥1.80 和 ≥1.79,旧版本会回退到"line" - 工作区设置(
.vscode/settings.json)优先级高于用户设置,改了没反应先检查左下角是否显示「工作区」 - Vim 插件等会强制接管光标样式,关掉插件再试能快速定位干扰源
光标太细看不清?别调字体,改 editor.cursorWidth
默认是 1 像素,在 macOS Retina 屏、Windows 高 DPI 或小字号下几乎不可见。这不是渲染 bug,是设计如此。
- 推荐从
"editor.cursorWidth": 2起步,3 在等宽字体(如 Fira Code)下依然干净 - 该值只影响
"line"和"underline"类型的粗细,对"block"无效 - 设为 0 或负数会被忽略,不报错也不生效
- 超过 5 后,若启用连字(
editor.fontLigatures: true),可能遮挡==或=>等符号细节
关闪烁不是设 false,而是用 "solid"
editor.cursorBlinking 不是布尔开关,只接受 5 个合法字符串:"blink"(默认)、"smooth"、"phase"、"expand"、"solid"。写错就退回 "blink"。
-
"off"是合法值,但false、"false"、0全部无效 -
"solid"= 常亮不闪,不是“关闭”,而是把动画帧压成一帧;视觉上最稳,也最常用 -
"smooth"和"phase"在部分显卡驱动下可能不同步或拖影,macOS 上若同时开了editor.smoothScrolling更易出问题 - 终端光标完全独立,必须单独配
terminal.integrated.cursorBlinking(默认为false)
颜色要单独配,且格式错一个字符整个 colorCustomizations 就失效
没有 editor.cursorColor 这种配置项。颜色必须走 workbench.colorCustomizations 里的 editorCursor.foreground。
- 示例:
"editorCursor.foreground": "#ff4d4d",RGBA 也可用(如"#ff4d4d80") - 漏掉
#、位数不对(如"#f4d")、多加空格,都会导致整个workbench.colorCustomizations失效,光标退回默认色 - 某些深色主题会硬编码该值,覆盖无效,得先确认主题是否锁死颜色
- 这个颜色会影响所有编辑器区域的光标(含搜索框、终端输入),但不影响断点箭头或折叠指示符
最容易被忽略的是:终端光标和编辑器光标互不影响,editor.* 设置对终端完全无效;还有就是工作区配置优先级高于用户配置,很多人改了半天 settings.json 却没注意到右下角那个小小的「工作区」标签。











