Ctrl+F9没反应或排错位置是因为sort_lines命令对选区有硬性要求:只点光标会整文件排序;只选中部分字符不识别为多行;末尾缺换行符则漏行;首行全空格则排最前;状态栏须显示“x lines”才有效;它按每行首个非空白字符ASCII值机械升序排列,B(66)在a(97)前。

Ctrl+F9 为什么没反应或排错位置
不是快捷键坏了,是 sort_lines 命令对选区有硬性要求:只点了一下光标、没拖选 → 它会对整个文件排序;只框选了中间几个字符(比如只选中 log)→ 不被识别为多行,命令静默失败;选区末尾没包含最后一行的换行符 → 该行被完全跳过;某行开头全是空格或 \t → 它跳过空白后取第一个可见字符比较;整行只有空格 → 该行排到最前面。
验证是否选对:右下角状态栏必须显示类似 5 lines,而不是 5 characters 或只有光标位置。
sort_lines 的升序逻辑到底是什么
它不做语义理解,只做机械比较:取每行第一个非空白字符(如 apple 拿 a,Banana 拿 B),按 ASCII 值字典序排 —— B(66) a(97),所以 Banana 一定在 apple 前面;数字字符串逐位比:10.txt 首字符是 1,2.txt 是 2,因此 10.txt 排在 2.txt 前面;空行或全空白行视为最小,永远排最前。
这不是 bug,是设计使然。如果你期望 apple 在 Banana 前面,就得预处理或换插件。
忽略大小写、数值排序、中文首字怎么搞
sort_lines 原生不支持这些,但有对应解法:
- 忽略大小写:先按
Ctrl+K, Ctrl+L全转小写,再按Ctrl+F9 - 数值排序(如
log1/log10):装插件Sort Numbers,命令面板输Sort Numbers: Sort Ascending - 中文首字拼音排序:原生不支持,需导出用 Python 处理:
sorted(lines, key=lambda x: lazy_pinyin(x.strip()[0], style=FIRST_LETTER)) - 按行长度排序:装插件
SortByLength,命令面板输Sort by length;注意它按 UTF-8 字节数算,一个中文通常是 3 字节
去重和降序为什么不能跳步
Remove Duplicate Lines(Ctrl+Shift+U)等价于 Unix 的 uniq,只删连续重复行;reverse(Ctrl+Alt+R)只翻转当前顺序 —— 跳步等于白干。
正确链路必须是:
- 去重:先
Ctrl+F9升序 → 全选 →Ctrl+Shift+U - 降序:先
Ctrl+F9升序 → 全选 →Ctrl+Alt+R(Win/Linux)或Cmd+Option+R(macOS) - 若常需降序,建议手动加键位绑定:
[{"keys": ["ctrl+shift+f9"], "command": "sort_lines", "args": {"reverse": true}}]
真正容易被忽略的是边界控制 —— 你得自己决定哪些行属于同一逻辑块,然后手动框选完整,包括每行末尾的换行符。











