sublime text 中移动整行的默认快捷键是 ctrl+shift+↑/↓(windows/linux)或 cmd+shift+↑/↓(macos),可不选中内容直接移动当前行,选中多行则整体平移,跨行多光标时各行独立移动。

Sublime Text 中移动整行的默认快捷键是什么?
Sublime Text 默认支持不选中任何内容时,用 Ctrl+Shift+↑ 或 Ctrl+Shift+↓(Windows/Linux)直接移动当前行。macOS 对应的是 Cmd+Shift+↑ / Cmd+Shift+↓。这个操作会把光标所在行整体上移或下移一行,原位置空出,无需手动剪切粘贴。
选中多行后怎么保持块结构一起移动?
只要选中了连续的多行(哪怕只选中某几行的部分字符),同样用上面那组快捷键,Sublime 会把整个选区当作一个逻辑块上下平移。注意:它不是“交换行”,而是「插入到目标位置并推挤其他行」——比如选中第3–5行按 Ctrl+Shift+↑,它们会整体移到第2行上方,原第2行变成第6行。
- 如果选区跨行但不连续(比如用
Ctrl+鼠标点击添加多个光标),快捷键只对每个光标所在行分别生效,不会当做一个块 - 移动过程中若碰到文件首尾,操作会静默失败,不会报错也不提示
- 该操作会自动保留缩进层级,但不会智能调整嵌套结构(比如把
if块移到for外部时,缩进不变,需手动修正)
快捷键失效或冲突了怎么办?
常见原因是插件覆盖(如 Emacs Pro Essentials 或 SublimeCodeIntel)、系统级快捷键拦截(尤其 Windows 上某些输入法或远程桌面工具会吞掉 Ctrl+Shift+方向键),或者用户自定义了键绑定。
- 检查是否启用了「菜单 → Preferences → Key Bindings – User」里存在重复绑定,搜索
"ctrl+shift+up"或"move"关键字 - 临时禁用插件:右键菜单 →
Package Control: Disable Package,逐个排查 - Windows 用户可尝试改用
Alt+Shift+↑/↓(部分版本默认备用键) - macOS 用户注意 Caps Lock 是否开启,它可能干扰
Cmd+Shift组合
想自定义成其他快捷键(比如 Vim 模式习惯)?
可以,在 Preferences → Key Bindings – User 里添加 JSON 条目,例如:
[
{ "keys": ["ctrl+k", "ctrl+u"], "command": "swap_line_up" },
{ "keys": ["ctrl+k", "ctrl+j"], "command": "swap_line_down" }
]
注意:swap_line_up 和 swap_line_down 是交换行(不推挤),而默认的 move 类命令是带位移的。两者行为不同,别混用。另外,自定义组合键尽量避开 Sublime 内置高频命令(如 Ctrl+K 系列常用于折叠),否则容易误触发。
实际用多了会发现,真正容易被忽略的是「移动后光标停在哪」——默认停在移动后块的首行开头,而不是你原来选中的起始位置。如果要继续编辑末尾,得额外按几次 →,这点没有快捷方式补偿。











