vscode 1.80+ 已彻底移除 editor.suggestsorting,排序由语言服务器主导;需配合 editor.suggest.sortselecteditems: false 和 editor.suggest.localitybonus: true,并检查语言专属设置(如[javascript])是否覆盖全局配置,才能优化高频补全位置。

VSCode 1.80+ 版本已彻底移除 editor.suggestSorting,任何试图靠它调顺序的配置都无效——不是你配错,是它真没了。
为什么改了 settings.json 还没效果?检查语言专属覆盖
VSCode 的补全行为优先级顺序是:[javascript] > [typescript] > 工作区设置 > 用户设置。你以为改的是全局,其实被语言块静默覆盖了。
- 打开
settings.json,搜索"[javascript]": {或"[typescript]": {,确认里面没有重复或冲突的editor.suggest.*配置 - 比如
"[javascript]": { "editor.suggestSelection": "recentlyUsed" }会直接覆盖你全局设的"first" - 临时验证方法:在
settings.json顶部加一句"editor.suggestSelection": "first",再在 JS 文件里按Ctrl+Space,看是否高亮首项;不生效就说明被语言块劫持了
editor.suggest.sortSelectedItems: false 是前提,不是可选项
这个配置关的是“历史选择自动置顶”逻辑。不开它,你选 10 次 useState,下次输 us 它仍可能被 useCallback 或 UserSettings 类型挤到第二页。
- 必须和
editor.suggest.localityBonus: true配合使用,单独开后者几乎没感知 - 它只对“客户端权重调整”起效,不影响语言服务器返回的原始顺序(比如 TS Server 给接口名打的
sortText值依然占主导) - 设为
false后,你手动选中的项不会再“记住位置”,每次都要重新适应排序逻辑
怎么让 console.log、useState 这类高频项稳定靠前?
VSCode 不支持“主观常用项置顶”,但可通过缩小候选池 + 提升匹配精度来逼近效果。
- 禁用干扰插件:比如某些 Snippet 插件会注入大量低相关度建议,拉低高频项权重
- 关闭冗余补全源:在设置中设
"editor.suggest.showKeywords": false、"editor.suggest.showMethods": true等细粒度开关,保留真正需要的类别 - 确保语言服务器正常工作:比如 TypeScript 项目缺
tsconfig.json,或 Python 项目没正确选解释器路径,会导致类型信息缺失,补全顺序完全失序
真正影响排序的从来不是编辑器 UI 层配置,而是语言服务器返回的原始建议质量与权重。你调的只是过滤和展示逻辑,不是重写语义理解——这点容易被忽略,但恰恰是复杂点所在。











