sublime text 原生不支持多行物理倒序排列;需手动绑定 sort_lines 命令并设 reverse: true,且选区必须包含完整换行符才能生效。

Sublime 没有“多行倒序排列”的内置快捷键
直接说结论:Sublime Text 原生不提供类似 Ctrl+F9 那样一键把选中多行从 bottom 到 top 反向重排的命令。你搜 reverse 或按 Ctrl+Shift+P 输入 “reverse lines”,结果为空——这不是你操作错了,是它真没这个功能。
很多人误以为 Sort Lines (Z-A) 就是倒序排列,但它只是按首字符 ASCII 降序排(比如 Zoo 排在 apple 前),不是把第1行和最后一行对调、第2行和倒数第二行对调那种物理意义上的“行倒序”。
用 sort_lines 命令 + 自定义键位实现行倒序
Sublime 的 sort_lines 命令支持 reverse 参数,但默认快捷键不暴露这个选项。你需要手动绑定:
- 打开
Preferences → Key Bindings - 在右侧用户键位文件中添加:
[{"keys": ["ctrl+alt+f9"], "command": "sort_lines", "args": {"reverse": true}} - 保存后,选中多行再按
Ctrl+Alt+F9(Windows/Linux)或Cmd+Alt+F9(macOS),就能真正按行位置倒序:原第1行变最后一行,原最后一行变第1行
注意:reverse: true 和大小写无关,它只翻转行顺序,不改变每行内部内容;也不依赖首字符,哪怕某行开头是空格或制表符,照样参与倒序位置计算。
选区必须含换行符,否则命令静默失败
sort_lines 对选区结构很敏感。常见失效场景:
- 只用鼠标点一下某行中间(没拖选)→ 它对整个文件排序,不是你想要的局部倒序
- 选中的是“视觉上连续的几行”,但末尾没包含最后一行的换行符 → 最后一行被忽略,实际只倒序了前 N−1 行
- 选区里夹着空行(纯换行符)→ 空行会被保留在倒序后的位置,但容易误判为“没生效”
最稳做法:光标停在目标区域第一行开头,Shift+↓ 往下选,直到最后一行末尾(确保光标停在换行符之后),或直接用 Ctrl+L 选中第一行,再按住 Shift + ↓ 逐行加选 —— 这样能保证每行都带换行符边界。
字符级反转和行倒序是两回事,别混用
有人想用“反转字符串”插件来倒序多行,结果发现每行文字也被翻过来了(hello world 变成 dlrow olleh)。这是典型的功能错配:
-
ReverseStringCommand插件处理的是字符序列,不是行逻辑 -
sort_lines处理的是行对象(以\n为界),每行当做一个不可拆分单元 - 如果既要行倒序,又要每行内字符串反转,得先跑一次
sort_lines(带reverse: true),再对结果运行reverse_string命令 —— 顺序不能反,否则行序乱了
真正容易被忽略的点是:Sublime 的“行”概念严格依赖换行符存在。没有 \n,就没有“行”;没有完整选中 \n,sort_lines 就不会把它当一行处理。这点在处理日志片段、JSON 数组项或剪贴板粘贴进来的无结尾换行文本时,特别容易栽跟头。











