ctrl+f9不是理想排序快捷键,因它要求严格选区(须显示“x lines”)、未选中则全文件排序、缺换行符会漏行;自定义sort_lines_case_insensitive和sort_lines+reverse:true可实现可控升序降序。

Ctrl+F9 为什么不是你想要的排序快捷键
它确实是原生升序快捷键,但行为受限:未选中任何文本时会整文件排序,只点一下光标就触发;选区不含换行符(比如鼠标拖到行末但没向下跨行)→ 最后一行被跳过;只框选中间几个字符 → 命令静默失败。右下角状态栏不显示 x lines,基本可以判定选区无效。
如何自定义一个真正可控的排序快捷键
直接改用户键位绑定,绕过默认的模糊逻辑:
- 打开
Preferences → Key Bindings,在右侧用户配置中添加新条目 - 升序且忽略大小写:
[{"keys": ["ctrl+alt+s"], "command": "sort_lines_case_insensitive"}] - 降序(物理翻转行序):
[{"keys": ["ctrl+shift+f9"], "command": "sort_lines", "args": {"reverse": true}}] - 保存后,快捷键立即生效,无需重启
注意:sort_lines_case_insensitive 是独立命令,不依赖预处理;而 sort_lines 加 {"reverse": true} 是真·行索引镜像,不是靠 Ctrl+Alt+R 反转当前乱序。
为什么不能只绑 sort_lines 就完事
因为原生 sort_lines 默认只看首非空白字符的 ASCII 值,导致:
-
Banana一定排在apple前面(B= 66,a= 97) -
10.txt排在2.txt前面(比首字符'1'和'2') - 空行或全空白行永远排最前,缩进多的行可能意外靠前(空格 ASCII = 32)
如果你绑了 sort_lines 却没传参,结果和 Ctrl+F9 完全一致——它不会自动帮你转小写、补零或识别数字语义。
选区边界才是排序成败的关键
所有快捷键都依赖正确选区,但 Sublime 不报错也不提示:
- 必须确保状态栏显示
5 lines,而不是5 selections或5 chars - 最稳选法:光标停第一行行首 →
Ctrl+L(Windows/Linux)选中该行 →Shift+↓逐行扩展,直到最后一行末尾(光标落在换行符之后) - 用
Ctrl+Shift+P输入Select All Lines也能快速选中完整块,但仅限连续无空行段落
缺一个换行符,就少一行参与排序;多一个空行,就多一个占位符顶到最前——这个“行”的定义,完全由 \n 决定,不是你肉眼看到的“一行”。











