Sublime Text交换两行的快捷键是Ctrl+Shift+↑/↓(Windows/Linux)或Cmd+Shift+↑/↓(macOS),光标所在行与相邻行整行互换,支持单行及多行块整体移动,且光标自动跟随逻辑位置。

Sublime 交换两行的快捷键是什么
Sublime Text 原生支持行交换,根本不用装插件、也不用剪切粘贴——按 ctrl+shift+↑(Windows/Linux)或 cmd+shift+↑(macOS)就能把当前行和上一行互换;同理,ctrl+shift+↓ 或 cmd+shift+↓ 是和下一行交换。
关键点在于:光标停在哪一行,就动哪一行。哪怕光标在行中第 5 个字符、甚至在缩进空格里,也按整行处理。
- 不选中也能用:没做任何选择时直接按快捷键,当前行立刻移动
- 多行一起动:选中连续几行(比如第 4–6 行),再按
ctrl+shift+↑,整个块会整体上移一格(原第 3 行被挤到下面) - 光标自动跟随:交换后光标仍在原逻辑位置(比如原在第 2 行中间,交换后就在新位置的对应列)
为什么别用 Ctrl+X / Ctrl+V 模拟交换
手动剪切粘贴看似直观,但实际极易引入副作用:缩进错乱、空行变多、光标跳到意外位置、甚至破坏代码折叠状态。
这是因为剪切操作依赖剪贴板,而粘贴行为受当前光标位置、缩进设置(tab vs space)、文件换行符(\r\n vs \n)影响;而原生 swap_line 命令绕过这些环节,直接操作行索引。
- 常见错误现象:先
ctrl+x剪掉第 5 行,再把光标移到第 3 行末尾按ctrl+v,结果第 4 行被顶开、缩进全变成 4 空格、还多出一个空行 - 更隐蔽的问题:某些语法高亮或 LSP 插件会对“临时缺失某行”产生误判,导致符号跳转失效
交换失败的三个高频原因
快捷键没反应?大概率不是 Sublime 问题,而是环境干扰。
- 输入法处于中文模式:Windows 下很多输入法会劫持
ctrl+shift+↑,切到英文输入法再试 - 系统级快捷键冲突:比如 Windows 的虚拟桌面切换(
ctrl+win+↑)或 macOS 的 Mission Control(ctrl+↑),检查系统设置里的键盘快捷键是否覆盖了 Sublime 绑定 - 自定义键绑定被覆盖:打开
Preferences → Key Bindings,搜索swap_line,确认没有其他规则把它禁用或重映射
多行块交换和复制行的配合用法
真实重构中,常需要“把 A 行提到 B 行前面,再复制一份做备份”——这时可以组合使用两个原生命令,比拖拽稳定得多。
例如要把第 10 行移到第 7 行上方,并在原位置留个副本:
- 把光标放到第 10 行任意位置,连按 3 次
ctrl+shift+↑(移到第 7 行上) - 再按一次
ctrl+shift+d,立刻在原第 10 行位置(现为第 11 行)生成副本 - 全程不碰鼠标、不触发剪贴板、缩进和注释符号完全保留
注意:swap_line 和 duplicate_line 都只对“完整行”生效;如果选中了部分文本,快捷键会触发内容移动而非行交换——这点很容易被忽略,尤其在快速编辑时。

















