Ctrl+F9没反应是因为sort_lines命令要求严格选中多行且状态栏显示“lines”;默认按首非空白字符ASCII值排序,Banana因B(66)<a(97)排在apple前;需用sort_lines_case_insensitive命令实现忽略大小写排序。

Ctrl+F9 没反应或排错行?先看状态栏有没有 “lines”
Sublime 的排序不是“点一下就灵”,sort_lines 命令对选区极其挑剔。它只在你真正选中了**多行文本**时才生效,而且必须满足几个硬性条件:
- 鼠标拖选必须包含换行符——光标停在某行末尾不按 Shift+↓ 是不算的
- 右下角状态栏必须显示类似
5 lines,而不是5 chars或只有光标位置 - 不能只框选中间几列(比如只选中
log两个字母),那样会被当作文本片段,sort_lines静默失败 - 最后一行如果没选中它的换行符(即光标停在行末但没向下拖),那一行直接被忽略
为什么 Banana 排在 apple 前面?这是 ASCII,不是 bug
sort_lines 默认按每行**第一个非空白字符的 ASCII 值**升序排,不区分大小写逻辑,也不做自然排序。这意味着:
-
Banana的首字符B(ASCII 66)比apple的a(ASCII 97)小 →Banana必然在前 -
10.txt和2.txt:前者首字符是1(49),后者是2(50)→10.txt排前面 - 空行或全空格行没有“第一个非空白字符”,被视作最小值 → 永远排最前
- 行首有缩进(空格或
\t)?它跳过这些,拿后面第一个字母比;但缩进本身也是字符,参与比较 → 可能导致缩进多的行意外靠前
想忽略大小写、按纯字母分组?别硬调默认命令
原生 sort_lines 不提供“ignore case”开关,但 Sublime 内置了另一个命令:sort_lines_case_insensitive。它不在快捷键里,得手动调用:
- 按
Ctrl+Shift+P(Win/Linux)或Cmd+Shift+P(macOS)打开命令面板 - 输入
sort lines case insensitive,回车执行 - 注意:它仍只看首非空白字符,只是把
A和a当作同一等级处理 - 如果文件里混着数字、中文、符号开头的行,这个命令也无能为力——它不识别语义,只比字节
排序后缩进乱了、空行跑位?你得自己管边界
sort_lines 完全不感知格式,它把每行当纯字符串处理。所以:
- 缩进是字符的一部分,参与排序 →
hello会比world小(因为空格 ASCII 是 32) - 空行会被顶到最前,破坏段落结构 → 排序前建议先用
Ctrl+H查找^\s*$,替换为临时标记如__EMPTY__ - 排序完再查
__EMPTY__替换回空行,否则分隔效果就没了 - 如果要保持缩进对齐,排序前先执行
Unindent(命令面板搜),排完再手动补或用插件重加
真正难的从来不是按哪个键,而是你得提前想清楚:哪些行该一起排、哪些空白算“无效”、大小写要不要抹平、空行算不算数据一部分。这些判断没人替你做,sort_lines 只负责执行。

















