Python补全被snippet遮挡是因为VSCode默认将代码片段排在建议首位,需设"editor.snippetSuggestions": "bottom"使Pylance语义补全优先;import补全靠前需禁用wordBasedSuggestions并启用python.autoImportCompletions和showModules。

为什么 Python 补全总被 snippet 挡在后面?
因为 VSCode 默认把代码片段(snippet)排在建议列表最前面,而 Pylance 推出的类型感知补全(比如 response.json()、df.head())反而被压到下面,甚至要翻页才能看到。这不是 bug,是默认权重策略——editor.snippetSuggestions 控制的就是这个顺序。
实操建议:
-
"editor.snippetSuggestions": "bottom":强制把 snippet 推到最后,让语义补全(Pylance/IntelliSense)优先出现 - 别用
"inline",它会让 snippet 和语义建议混排,反而更难定位目标项 - 如果项目里自定义了大量 snippet(如
pylint规则模板),可单独为 Python 设定:"editor.snippetSuggestions": { "python": "bottom" }
如何让 import 补全比变量名更靠前?
输入 import r 时,VSCode 常先列出你文件里所有以 r 开头的变量(result、rows),而不是 requests 或 re。这是因为 editor.wordBasedSuggestions 默认开启,且 import 补全没被显式提权。
实操建议:
- 关闭干扰项:
"editor.wordBasedSuggestions": false(全局)或仅关 Python:"editor.wordBasedSuggestions": { "python": false } - 启用 import 专项提示:
"python.autoImportCompletions": true(需 Pylance) - 确保
"editor.suggest.showModules": true,否则第三方包模块名根本不会进建议列表
JavaScript 中 this. 补全总是空?检查这三项底层开关
在类方法里打 this. 没反应,不是插件没装,很可能是 IntelliSense 的几类建议被手动关掉了。VSCode 的补全建议分门别类,每类都可独立开关。
实操建议:
-
"editor.suggest.showMethods": true(方法)、"editor.suggest.showProperties": true(属性)、"editor.suggest.showValues": true(值)——缺一不可 - TypeScript 用户额外确认:
"typescript.suggest.classMembersInImplicitAny": true,否则any类型下this.直接不触发 - 若用 JSDoc 注解但没生效,检查是否启用了
"javascript.suggest.autoImports": true,否则 import 补全和成员补全会断连
权重冲突时,谁最终说了算?
当多个配置叠加(比如全局设了 snippetSuggestions: bottom,Python 工作区又设成 top),VSCode 会按「工作区 > 用户 > 语言特定」逐级覆盖。但真正决定排序的,是语言服务器返回建议时附带的 sortText 字段——Pylance 和 TypeScript Server 自己算好优先级,VSCode 只负责渲染。
这意味着:你调的不是“权重滑块”,而是“触发条件”和“可见性开关”。想让某类补全变强,重点不在拖动顺序,而在确保它被生成出来。比如 df. 不出 pandas 方法,大概率是 python.defaultInterpreterPath 指向了没装 pandas 的环境,而不是排序设置错了。


















