补全扩展不生效需先检查editor.suggest.showmethods等底层开关:确保editor.suggest.showclasses、showfunctions等为true,editor.quicksuggestions设为{"other":true,"comments":false,"strings":false},并确认语言模式与片段scope匹配。

补全扩展不生效?先检查 editor.suggest.showMethods 这类底层开关
VSCode 的代码补全不是“装了就自动满配”,很多扩展(比如 Python、IntelliSense、TabNine)依赖编辑器自身的建议系统开关。如果补全菜单压根不弹,别急着重装扩展,先打开设置搜索 editor.suggest.*:
-
editor.suggest.showClasses、editor.suggest.showFunctions等布尔值必须为true,否则对应类型符号不会出现在补全列表里 -
editor.suggest.snippetsPreventQuickSuggestions设为false才能让用户自定义代码片段和语言扩展的补全共存 -
editor.quickSuggestions必须启用(默认是{"other": true, "comments": false, "strings": false}),否则在普通代码区连基础触发都不发生
多个补全扩展冲突时,用 editor.suggestSelection 和排序权重控制优先级
同时启用 Pylance、Kite 和自定义 snippets.json 时,补全项常乱序或互相覆盖。VSCode 不支持手动拖拽排序,但可通过两个机制干预:
-
editor.suggestSelection设为"recentlyUsedByPrefix"(而非默认"recentlyUsed"),让相同前缀下历史高频项优先,缓解多源混排混乱 - 在扩展的
package.json或语言配置中,通过"activationEvents"和"contributes.completionProviders.triggerCharacters"显式声明触发范围,避免无差别监听(例如eslint扩展不该响应.触发) - 某些扩展(如
Auto Rename Tag)本质不提供补全,却注册了completionItemProvider,可在extensions.ignoreRecommendations中临时禁用可疑项做排除
补全延迟高或卡顿?关掉 editor.suggest.preview 和非必要预加载
开启 editor.suggest.preview 后,VSCode 会在补全项悬停时尝试预读文档和类型定义,对大型项目(尤其是含 node_modules 或 __pycache__ 的 Python 工作区)极易引发 IO 阻塞。实测可降低 300–800ms 响应延迟:
- 直接设
editor.suggest.preview为false,牺牲少量预览信息换响应速度 - 在
settings.json中添加"files.watcherExclude",排除补全无关目录,例如:"**/node_modules/**": true,
"**/__pycache__/**": true
- 禁用
typescript.preferences.includePackageJsonAutoImports(TypeScript 用户),该选项会扫描整个node_modules查找可导入包,与补全强耦合且极慢
自定义补全片段被忽略?确认 scope 和 prefix 匹配当前语言模式
写好 snippets.json 却没反应,大概率是作用域没对上。VSCode 的代码片段按语言 ID 绑定,不是文件后缀:
- JavaScript 文件实际语言模式是
javascript,不是js;React JSX 是javascriptreact,不是jsx - 检查当前编辑器右下角显示的语言名(点击可切换),再对照片段 JSON 的
"scope"字段,例如:"scope": "javascript,typescript"
-
prefix必须完全匹配输入字符(区分大小写),且不能含空格或点号;想匹配log.,得写成"prefix": "log"并靠triggerCharacters配合,而非"prefix": "log."
补全逻辑藏在多层开关和隐式约定里,最常被忽略的是语言模式与片段 scope 的错位,以及 editor.suggest.* 系列开关的全局压制效应。











