ctrl+shift+↑/↓(win/linux)或cmd+shift+↑/↓(macos)是sublime text默认绑定的swap_line_up/down命令,实现相邻行内容互换而非插入式移动,不产生空行,总行数不变。

Ctrl+Shift+↑/↓(Win/Linux)或 Cmd+Shift+↑/↓(macOS)就是默认交换快捷键
Sublime Text 原生绑定的 swap_line_up 和 swap_line_down 命令,对应的就是这组快捷键——它不是“移动”,而是严格意义上的相邻行内容互换。第 5 行按一次 Ctrl+Shift+↑,结果是第 4 行和第 5 行对调,总行数不变,也不产生空行。
注意:这不是用户自定义的快捷键,而是 Sublime 默认就启用的。你不需要改配置、装插件,只要确保没被拦截,就能直接用。
- 光标停在任意位置(哪怕只是缩进空格里),只要不在文件首行或末行,就能触发
- 选中多行时,整个块会和「起始行的上一行」或「结束行的下一行」交换,不是逐行轮换
- 不校验缩进层级、折叠状态、语法结构——搬完之后 if 块顶格了、import 跑到函数体里了,它不管
按了没反应?先查这三处静默拦截点
快捷键失效几乎从不因为 Sublime 自身问题,而是被系统或软件悄悄吞掉:
- 输入法处于中文状态(尤其是搜狗、微软拼音),
Ctrl+Shift+↑常被绑定为中英文切换 → 切到英文输入法再试 - Vintage 插件开着且在 Normal 模式,
Ctrl+Shift+↑被当 Vim 导航键处理 → 按i进 Insert 模式,或去Preferences → Key Bindings – User删除冲突绑定 - 系统级热键冲突:Windows 上 NVIDIA 控制面板、远程桌面;macOS 上 Mission Control 默认占用了
Cmd+↑→ 进系统设置关掉对应快捷键
别把 swap_line_up 和 move_line_up 搞混了
很多人在用户 keymap 里手动绑错了命令,导致行为异常:
-
swap_line_up:真交换,第 4 行 ↔ 第 5 行,撤销一次就回原位 -
move_line_up:真位移,第 5 行提到第 4 行上方,原第 4 行变成第 5 行,中间不留空 - 默认快捷键调用的是
swap_line_up;如果你把它改成move_line_up,多行选中时会顺序错乱、撤销链断裂 - 验证方式:打开
Preferences → Key Bindings,左侧 Default 文件里搜"ctrl+shift+up",确认绑定的是swap_line_up
跨行互换(比如第 3 行和第 10 行)只能靠鼠标拖拽
原生快捷键只支持相邻行交换,无法跳着换。想让不连续的两行互换位置,最稳的方式是:
- 按住
Ctrl(Windows/Linux)或Cmd(macOS),点击行号侧边栏选中目标行(可多选不连续行) - 鼠标移到选中区域左侧空白处(不是代码区),按住拖到目标位置,松手即完成
- Sublime 会自动处理插入线提示和空行逻辑,比连按 7 次快捷键更可靠
- 拖拽时不校验作用域,缩进也不会自动调整——拖完发现缩进错位,得手动按
Ctrl+[或Ctrl+]修正











