sublime text字母排序严格按每行首非空白字符ascii值比较,非智能语义排序;ctrl+f9仅对完整选中行生效,降序需先升序再ctrl+alt+r反转,大小写敏感且大写字母优先。

Sublime Text 的字母排序不是“智能语义排序”,而是严格按每行第一个非空白字符的 ASCII 值做字符串比较——理解这点,才能避免 90% 的排序翻车。
Ctrl+F9 排得不对?检查你是不是只点了光标
这个快捷键调用的是 sort_lines 命令,但它只对「已选中的完整行」生效。常见失效场景包括:
- 没做任何选择,只点了一下光标 →
sort_lines会作用于整个文件,极易误操作 - 用鼠标框选中间几列(比如只选中单词部分)→ Sublime 不识别为多行,命令静默失败
- 跨行选择但末尾没包含最后一行的换行符 → 该行被完全忽略
- 某行开头全是空格或制表符 → 它跳过空白后取第一个可见字符;若整行为空白,则排在最前面
降序排列为什么找不到 Sort Lines (Z-A) 菜单项?
当前主流版本(2026 年)已移除菜单里的 Sort Lines (Z-A) 选项。可靠做法只有两步:
- 先用
Ctrl+F9(Win/Linux)或Cmd+F9(macOS)升序排好 - 全选已排序区域,再执行
Ctrl+Alt+R(Win/Linux)或Cmd+Option+R(macOS),对应命令是reverse,不是去重
注意:Ctrl+Alt+R 是 Edit → Permute Lines → Reverse,它只反转顺序,不改变排序依据——乱序状态下执行 reverse,结果仍是乱序。
大小写和数字排序“反直觉”,其实是设计使然
sort_lines 是纯字符串排序,不解析语义:
-
Banana一定排在apple前面,因为大写B(ASCII 66)a(97) -
10.txt排在2.txt前面,因为首字符'1'(49)'2'(50) - 想按数字大小排(1, 2, 10),必须装插件
Sort Numbers或手动补零(1.txt→01.txt) - 忽略大小写排序没有一键菜单,临时解法:先
Ctrl+K, Ctrl+L全转小写,再Ctrl+F9
去重失败?大概率是忘了“必须先排序”
Remove Duplicate Lines(快捷键 Ctrl+Shift+U)等价于 Unix 的 uniq,只删连续重复行:
- 原始数据是
apple、banana、apple、cherry→ 直接去重后仍是四行 - 正确流程必须是:
Ctrl+F9升序 → 全选已排序块 →Ctrl+Shift+U - 若含大小写混用项(如
Apple和apple),需在排序前统一格式(Ctrl+K, Ctrl+L)
真正容易被忽略的是边界控制:你得自己决定哪些行属于同一逻辑块、是否保留空行分隔、缩进要不要参与比较——sort_lines 不管这些,它只比第一个非空白字符。











