VSCode 1.80+ 已移除 editor.suggestSorting 配置,排序由语言服务器 sortText 和客户端匹配权重共同决定;可调 editor.suggestSelection 或手动选择,禁用 auto imports、优化 snippet prefix 以改善补全顺序。

VSCode 的 editor.suggestSorting 已被移除,别白费劲找它
VSCode 1.80+ 版本起,editor.suggestSorting 配置项已被彻底删除,设了也无效。这不是你配置错,是官方砍掉了这个开关。补全排序逻辑现在由语言服务器(LSP)和内置建议器共同决定,不再暴露简单开关。
真正能影响排序的,只有两类机制:一是语言服务器返回的 sortText 字段(由后端控制),二是 VSCode 自身对匹配项的权重微调(如前缀匹配、大小写、词频等)。
想让高频函数/变量靠前?用 editor.suggestSelection + 手动确认
VSCode 默认选中第一个建议项,但如果你常打 console 却总跳出 console.table,其实不是排序错了,而是匹配优先级高——console 是前缀,console.table 是完整词,后者在部分语言服务器里被标了更高 sortText。
-
editor.suggestSelection设为"recentlyUsed":让最近用过的排前面(适合个人习惯固化) -
editor.suggestSelection设为"first"(默认):永远选首个,但不等于“最相关” - 按
Ctrl+Space唤出建议后,用方向键手动选中目标再回车——这是最稳的“绕过排序”的方式
JavaScript/TypeScript 补全乱序?检查 typescript.preferences.includePackageJsonAutoImports
TypeScript 语言服务器会根据 package.json 中的依赖自动注入类型补全,但若启用了 "auto" 模式,它可能把第三方包里的同名函数(比如 map)插到原生数组方法前面,造成“明明想打 arr.map,结果先跳 lodash.map”。
- 设
typescript.preferences.includePackageJsonAutoImports为"off"可禁用该行为 - 或改用
"explicit":只在 import 语句存在时才提示对应包的补全 - 注意:该设置对 JavaScript 文件同样生效(只要启用了 JS 语言服务)
自定义 snippet 排序靠前?给 body 加空格或注释没用,得改 prefix
很多人以为在 snippet 的 body 里加 // 或缩进能让它在列表里上浮,实际无效。VSCode 对 snippet 的排序只看 prefix 匹配度和长度,越短、越精确匹配当前输入,越容易靠前。
- 比如想让
logsnippet 总比console.log原生补全快一步,就把 prefix 设成l或lo(而非log) - 避免 prefix 和内置补全完全重叠(如都用
log),否则取决于 LSP 返回顺序,不可控 - 可通过
Developer: Toggle Developer Tools→ Console 查看editor.action.triggerSuggest调用后的建议数组,验证实际返回顺序
补全排序本质是客户端渲染层对服务端返回结果的二次加权,而服务端逻辑(尤其是 TS Server、Pylance、Rust Analyzer)各自独立且不开放排序接口。真要“稳定控制”,只能收窄触发条件(改 prefix)、干预输入上下文(加类型标注)、或接受手动选择——这才是多数人忽略但最实在的路径。


















