直接改 explorer.sortorder 为 "modified" 需写入 .vscode/settings.json 才对当前项目生效;顶部“排序”按钮仅为临时切换,关闭窗口即失效。常见无效原因:工作区设置被覆盖、插件干扰、远程环境 mtime 不准;该值使同级项按修改时间倒序排列(最新在前),但不支持升序、不包含未保存文件、不区分文件夹优先,且折叠状态会掩盖排序效果。

直接改 explorer.sortOrder 为 "modified" 就行,但必须写进 .vscode/settings.json 才对当前项目生效;点顶部“排序”按钮只是临时切换,关掉窗口就失效。
为什么改了设置没变化?先查这三个地方
常见现象:设完 explorer.sortOrder: "modified",文件列表还是按名字排。大概率是下面某个环节被忽略:
- 工作区设置被覆盖——检查项目根目录下有没有
.vscode/settings.json,它优先级高于用户全局设置,如果里面写了"explorer.sortOrder": "name",那全局设的modified就完全不生效 - 插件干扰——GitLens、Project Manager 等扩展会劫持 Explorer 渲染逻辑,临时禁用它们再试一次
- 远程开发环境(SSH/WSL)下修改时间不准——NTFS 和 ext4 对 mtime 的记录精度不同,尤其新创建未保存的文件,VSCode 可能读不到有效时间戳
explorer.sortOrder: "modified" 的实际行为
这个值会让所有同级条目(包括文件夹和文件)统一按最后写入时间倒序排列,最新改过的排最上面。但它不是“智能排序”,有明确限制:
- 只作用于磁盘上真实存在的文件,未保存的编辑器标签页、Git 暂存区里的新文件不会参与排序
- 不区分升/降序——固定是“最新在前”,没法改成“最早在前”
- 文件夹和文件混排,比如
src/文件夹可能插在index.ts和utils.js中间,VSCode 原生不支持“文件夹优先 + 文件按修改时间排”的复合逻辑 - 折叠的子文件夹内部不受影响,只排平级项
想按类型分组显示?"type" 不等于“分组”,只是排序规则
设 explorer.sortOrder: "type" 后,你会看到 .js 都挨着、.ts 紧跟其后、.json 再后面,但这只是排序,不是视觉分组:
- 排序逻辑是:文件夹 > 文件 > 符号链接,同类里再按扩展名(如
.js、.ts)字典序排 - 没有扩展名的文件(如
README、Dockerfile)会被归为unknown类型,统一排在最后 - 若开启
explorer.compactFolders: true(默认开启),折叠状态会掩盖类型排序效果,建议设为false再观察 - 真要视觉分组(比如把所有测试文件缩进嵌套在主文件下),得靠
explorer.fileNesting.patterns配置或插件,和sortOrder是两回事
最容易被忽略的一点:排序本身不耗性能,但如果你开着 files.autoSave: "afterDelay",频繁编辑会触发 Explorer 频繁重排,反而拖慢响应——这时候不如调大延迟或干脆关掉自动保存。











