Sublime Text 中可用 Ctrl+Shift+↑/↓(Win/Linux)或 Cmd+Shift+↑/↓(Mac)直接交换相邻两行位置,无需选中、不依赖插件,光标所在行即生效;多行选中时无效,Vintage 模式可能覆盖快捷键。

Sublime 里怎么快速交换两行位置
直接用 Ctrl+Shift+↑ 或 Ctrl+Shift+↓(Windows/Linux),Mac 上是 Cmd+Shift+↑ / Cmd+Shift+↓。这是 Sublime Text 内置的 swap_line_up 和 swap_line_down 命令,不用装插件、不依赖选中范围,光标在任意一行按就能动。
常见错误是误按成 Ctrl+↑(滚动页面)或 Ctrl+Shift+L(多行选择),结果没反应还怀疑快捷键失效。其实只要光标停在要移动的那行里,哪怕只在行首空格处,也能生效。
- 只能交换相邻两行:想把第 1 行移到第 5 行?得连按 4 次
Ctrl+Shift+↓ - 如果当前行是最后一行,
Ctrl+Shift+↓无效果;倒数第二行按它,会和最后一行互换 - 该操作不改变缩进或空格——原样搬动整行,包括行尾空白
选中多行后按 Ctrl+Shift+↑ 为什么没反应
因为这个快捷键只对“光标所在行”起作用,不是对“选中文本所在的行”。一旦你拉取了多行选区,Sublime 就默认你在编辑内容,而不是调度行序。
正确做法是:把光标放到你想上移的那行任意位置(不需要选中),再按快捷键。如果真想批量调序(比如把第 3、5、7 行统一上提一行),得靠插件如 Text Pastry 或手动分次操作。
- 选中整行(比如用
Ctrl+L)后再按快捷键,依然有效——因为Ctrl+L实际是把光标移到行首并选中该行,但命令触发依据仍是光标行号 - 如果开了 Vintage 模式(Vim 键绑定),默认快捷键会被覆盖,需检查
Preferences → Package Settings → Vintage → Key Bindings – User是否禁用了原生绑定
想转置行内容(比如把 a,b,c 变成 c,b,a)不是交换行顺序
这是概念混淆。“转置行内容”通常指反转单行内字段顺序(类似数组 reverse),而 Sublime 默认没有这个功能。它只有“交换行位置”,不是“反转行内字符”。
如果你需要把 apple,banana,cherry 变成 cherry,banana,apple,得靠正则 + 命令行思维:
- 先用
Ctrl+H打开替换面板,勾选Regular Expression - 查找:
^([^,]+),([^,]+),([^,]+)$(适用于严格三字段) - 替换为:
$3,$2,$1 - 更通用的做法是装插件
Column Selection或用 Python 控制台跑view.substr(view.line(sel))+split(',')+reversed(),但日常建议导出到脚本处理
快捷键失效或冲突时怎么查和修
最直接的办法是打开 Preferences → Key Bindings – User,看有没有覆盖了 swap_line_up 的自定义规则。常见干扰来自 MarkdownEditing、Emmet、SideBarEnhancements 这类插件。
也可以通过 Ctrl+Shift+P 输入 Package Control: List Packages 确认是否意外禁用了核心包(比如不小心禁用了 Default 包)。
- 临时测试是否快捷键本身坏了:新建一个空文件,输入两行文字,不装任何插件,重启 Sublime 后尝试
- Mac 用户注意 Caps Lock 开启时
Cmd+Shift+↑可能被系统拦截,可去系统设置 → 键盘 → 快捷键关闭“将 Caps Lock 用作修饰键” - 某些键盘驱动(如 Logitech Options、Razer Synapse)会劫持组合键,关掉它们再试
行交换看着简单,但一旦混入多光标、Vintage 模式、远程开发(比如通过 VS Code Server 代理访问 Sublime),行为就可能不一致。真遇到怪现象,先关插件、再查日志(View → Show Console),比网上搜“Sublime 转置教程”快得多。

















