vscode补全列表由语言服务器生成,editor.suggest系列设置仅控制显示逻辑与排序,不参与建议生成;pylance未激活、语言模式错误或settings.json中editor.suggest.showmethods等开关未显式启用,均会导致补全不符合预期。

VSCode 的补全列表不是靠“匹配规则”配置的,而是由语言服务器(如 Pylance、TypeScript Server)生成建议后,再由编辑器的 editor.suggest 系列设置控制显示逻辑和排序行为。所谓“个性化匹配”,本质是调整建议的触发时机、筛选方式与优先级,而非写正则或自定义匹配算法。
为什么改了 settings.json 还是不按预期匹配?
常见现象:开了 editor.suggest.localityBonus 却没看到当前文件变量优先;设了 editor.suggest.showMethods 但点 . 后仍不显示方法。根本原因在于:这些设置只影响“已有建议列表”的呈现,不参与“建议生成”本身。
- Pylance 是否已激活?状态栏右下角必须显示
Pylance,不是Jedi或None - 当前文件的语言模式是否为
python(右下角点击确认)?误设为plaintext或json会导致所有补全失效 -
editor.suggest.showMethods等开关默认为false,需显式设为true才生效 - 某些设置(如
editor.suggest.localityBonus)仅在建议列表非空时起作用——若 Pylance 根本没推断出类型,就无“本地变量”可提升权重
真正影响补全内容来源的配置项
补全“有什么”,取决于语言服务器能否准确索引代码。以下设置直接决定建议池的构成:
-
python.analysis.extraPaths:添加自定义模块路径,否则from mylib import xxx中的mylib不会出现在补全里 -
python.analysis.stubPath:指向.pyi文件目录,让无类型提示的第三方库(如旧版requests)也能提供参数名和返回值提示 -
python.analysis.typeCheckingMode:设为strict时,Pylance 会更激进地推断变量类型,从而扩大补全范围(但也可能报更多错误) -
python.defaultInterpreterPath必须是绝对路径,且该环境已安装全部依赖——否则pd.、np.等补全直接为空
控制补全列表排序与可见性的关键开关
这些设置不改变“有哪些建议”,但决定你第一眼看到什么、哪些被过滤掉:
-
editor.suggest.localityBonus:设为true后,当前文件中定义的变量/函数会在同名建议中排更前 -
editor.suggest.showInlineDetails:开启后,补全项右侧显示简短类型或文档摘要(如str、→ int),大幅提升识别效率 -
editor.suggest.showMethods、editor.suggest.showFunctions、editor.suggest.showVariables:分别控制方法、函数、变量是否出现在列表中,默认多数为false -
editor.suggestSelection:设为"first"表示回车直接插入第一个建议,避免每次都要方向键选择
最易被忽略的是:所有 editor.suggest.* 设置对 Python 补全生效的前提,是 Pylance 已成功加载项目结构并完成首次索引。首次打开大型项目时,状态栏显示“Indexing…”期间修改这些设置无效;等 Pylance 图标稳定为绿色后,再重启窗口才能验证效果。











