Sublime Text侧边栏默认不按字母排序是正常设计,需安装SideBarEnhancements插件并启用sort_folders_first、sort_directories_by_name和locale_sort选项,再右键刷新文件夹方可生效。

侧边栏文件夹默认不按字母排序是正常行为
Sublime Text 的侧边栏(Sidebar)默认按文件系统返回顺序显示,而非字典序。它不会自动对文件夹和文件做统一排序,尤其在 macOS 或 Windows 上挂载的网络盘、符号链接、或含 Unicode 名称的目录中,顺序更不可控。这不是 Bug,而是设计使然——Sublime 优先保持与底层文件系统的一致性,避免因排序引入额外延迟或路径解析歧义。
-
view.settings().set("folder_exclude_patterns", [...])和file_exclude_patterns不影响排序逻辑 - 启用
"show_minimap": false等 UI 设置也完全无关 - 第三方插件如
SideBarEnhancements默认也不改排序,需额外配置
用 SideBarEnhancements 插件 + 自定义排序规则强制排序
目前最稳定可控的方式是安装 SideBarEnhancements 并配合其 sort_folders_first 和 sort_directories_by_name 两个设置。注意:这两个选项必须同时启用才生效,且仅作用于右键菜单「Refresh Folder」后的刷新动作,不是实时监听。
- 安装后,在
Preferences → Package Settings → SideBarEnhancements → Settings中添加:
{
"sort_folders_first": true,
"sort_directories_by_name": true,
"sort_files_by_name": true
}
- 修改保存后,**必须右键点击侧边栏任意文件夹 → 选择
Refresh Folder**,否则排序不触发 - 如果项目含大量子目录(>500 个),首次刷新可能卡顿 1–2 秒,这是插件遍历+排序的正常开销
- 该排序只影响侧边栏视觉顺序,不影响
Ctrl+P模糊搜索、Ctrl+Shift+T重开标签页等其他功能的排序逻辑
不要尝试用 override_settings 或 plugin_host 修改排序
有人试图通过 sublime-settings 文件覆盖或写 Python 插件 hook on_activated 来干预侧边栏渲染,这类做法基本无效。Sublime 的侧边栏由原生 C++ 模块驱动,未暴露排序钩子;plugin_host 进程无法访问侧边栏 DOM 结构,所有基于 view.window().folders() 的重排逻辑都只影响 API 返回值,不改变 UI 显示。
- 自定义
side_bar_visible或sidebar_width等设置项,与排序完全无关 - 修改
Packages/Default/side_bar.py属于危险操作,升级 Sublime 后会被覆盖,且极易导致侧边栏崩溃 - 试图用
sublime_plugin.EventListener监听on_post_save并调用refresh_folder,会引发无限递归刷新
中文/Unicode 文件夹名排序异常怎么办
当文件夹名含中文、日文或混合编码(如 测试-01、資料夾)时,即使启用了 sort_directories_by_name,也可能出现「测」排在「资」前面、「A-1」排在「AA」后面等不符合预期的情况。这是因为 Python 3 的 str.sort() 默认使用 ASCII 码序,非 locale-aware 排序。
- SideBarEnhancements 当前版本(v4.2.3+)已内置
locale_sort选项,但需手动开启:
{
"sort_directories_by_name": true,
"locale_sort": true
}
- 开启后,插件会调用系统 locale(如
zh_CN.UTF-8)进行排序,中文名将按拼音首字排序,英文仍按字典序 - Windows 用户若发现
locale_sort无效,需确认系统区域设置中「Beta 版:使用 Unicode UTF-8 提供全球语言支持」未被勾选(该选项会破坏 Python 的 locale 解析) - macOS/Linux 下建议运行
locale命令确认当前 locale 是否为 UTF-8 编码,否则排序可能退化为乱序
SideBarEnhancements + Refresh Folder 触发 + locale_sort 处理中文,其他任何“隐藏设置”或“强行 patch”的思路,大概率白忙活。










