Sublime Text 移动整行默认用 Ctrl+Shift+↑/↓(Win/Linux)或 Cmd+Shift+↑/↓(macOS),实际执行 swap_line_up/down 交换行而非剪切粘贴;若失效需检查插件冲突或键绑定是否被覆盖,推荐用 MoveLines 插件实现更直观的物理移动。

Sublime Text 里移动整行代码,用 Ctrl+Shift+↑ 和 Ctrl+Shift+↓ 最直接有效,Windows/Linux 默认生效;macOS 对应是 Cmd+Shift+↑ / Cmd+Shift+↓。
为什么默认快捷键不生效?检查是否被插件或系统占用了
常见情况是安装了 Emacs Pro Essentials、SublimeCodeIntel 或系统级输入法(如 macOS 的「输入源切换」)劫持了 Cmd/Ctrl+Shift+方向键。可以临时关闭插件验证,或在 Preferences → Key Bindings 中搜索 "move_line" 确认绑定是否存在:
[
{ "keys": ["ctrl+shift+up"], "command": "swap_line_up" },
{ "keys": ["ctrl+shift+down"], "command": "swap_line_down" }
]
如果没看到,说明默认绑定被覆盖或删除了,需手动补上。
swap_line_up 和 move_line_up 有本质区别
Sublime 默认绑定的是 swap_line_up(交换行),不是单纯“剪切粘贴到上/下一行”。这意味着:
- 它不会改变光标所在行的相对位置,而是把当前行和上/下一行互换
- 多行选中时,整个选区会整体上移或下移一行(不是逐行交换)
- 如果光标在第1行按
swap_line_up,无反应;而move_line_up(需自定义)可能支持“移到顶部”,但 Sublime 原生命令不提供该行为
想实现“剪切+粘贴到上/下一行”的效果?别改快捷键,改命令
如果你习惯 VS Code 那种“把当前行剪切后插入到上/下一行开头”的逻辑,原生 swap_line_* 不满足。可自定义命令,例如在 Preferences → Key Bindings 添加:
[
{
"keys": ["ctrl+alt+up"],
"command": "run_macro_file",
"args": {"file": "res://Packages/Default/Add Line Before.sublime-macro"}
}
]
但更稳妥的做法是用插件 MoveLines(通过 Package Control 安装),它提供 move_lines_up 和 move_lines_down 命令,行为更接近直觉——即“把选中行物理移动到相邻位置”,且支持多光标操作。
真正容易忽略的是:移动行时若光标在行尾($ 位置),部分插件或自定义宏会误判行边界,导致空行被插入。建议统一把光标停在行首(Home)再操作,尤其是处理缩进敏感的 Python 或 YAML 时。










