sublime text中快速交换相邻两行的快捷键是ctrl+shift+↑/↓(win/linux)或cmd+shift+↑/↓(macos),该操作为原生swap_line_up/down命令,实现上下行内容互换;若无效,需排查输入法拦截、插件冲突或系统热键占用;非相邻行交换需剪切粘贴或借助swap lines插件。

Sublime Text 里怎么快速交换两行?
直接用 Ctrl+Shift+↑ 或 Ctrl+Shift+↓(Windows/Linux),macOS 是 Cmd+Shift+↑ / Cmd+Shift+↓。这不是“选中后剪切粘贴”,而是原地交换——光标在哪一行,就和上/下行互换位置,无需手动选中。
为什么有时候按了没反应?
常见原因有三个:
- 光标不在行首或行尾也能触发,但若当前行是空行且上下也空,交换后视觉无变化,容易误判为失效
- 插件冲突:比如安装了
Emacs Pro Essentials或自定义了swap_line命令绑定,会覆盖默认快捷键 - 键盘布局问题:部分中文输入法下
Shift组合键被拦截,切换到英文输入法再试
想交换非相邻的两行怎么办?
Sublime 默认不支持任意两行拖拽交换,但可以曲线实现:
- 把光标移到第一行,按
Ctrl+L(Cmd+Lon macOS)整行选中 - 按
Ctrl+X剪切,然后移到目标行上方(或下方),按Ctrl+V粘贴 - 此时原第二行会自动下移(或上移),再对它重复一次
Ctrl+L→Ctrl+X→ 粘贴到刚腾出的位置
注意:这个过程依赖行内容唯一性;如果两行完全相同,靠肉眼判断容易错位。
有没有更稳的替代方案?
装一个轻量插件 Swap Lines(通过 Package Control 安装),它提供命令 swap_lines,并允许你绑定成更顺手的快捷键,比如:
{ "keys": ["ctrl+alt+up"], "command": "swap_lines", "args": {"up": true} }
它比原生逻辑更鲁棒:支持多行同时选中后整体上移/下移,且在折叠代码块内也能安全操作。不过得留意——如果某行有语法折叠(如函数体),Ctrl+Shift+↑ 可能只交换折叠标记所在行,而插件默认操作的是展开后的物理行。
真正容易被忽略的是:交换行为不记录在撤销栈的单一步骤里,连续交换多次后,Ctrl+Z 会逐次回退每一行移动,不是“一键还原交换结果”。











