sublime text 原生不支持拖拽选中文本移动,仅支持拖拽整行:需在行号右侧空白区(光标变小手)拖动,松手插入;若需拖拽选区,须装 dragselect 插件,但会覆盖 alt+拖拽列选择且缩进可能错位。

Sublime 原生不支持拖拽选中文本移动
直接告诉你结论:Sublime Text 底层没实现「鼠标拖拽已选中文本块到新位置」的功能。你选中一段文字,按住左键拖——它不会移动,大概率触发复制、光标跳转,或者干脆没反应。这不是快捷键没配对,也不是插件没装全,是编辑器设计上就没这个能力。
鼠标拖拽整行是唯一原生可用的“纯鼠标流”操作
想绕过键盘、只靠鼠标完成移动,唯一可靠路径是:不选中文本,而是拖拽「整行」本身。
- 把鼠标移到行号右侧、代码左侧的空白区(光标变成
✋小手图标),按住左键拖动 - 拖到目标行上方松手 → 插入到该行之前;拖到下方松手 → 插入到该行之后
- 过程中会出现一条粗横线,实时指示插入位置,比快捷键直观得多
- 必须是行首左侧空白区触发;如果光标在代码里或行尾空白处拖,会变成文本选择或复制,不是移动
拖拽选区?得靠 DragSelect 插件,但有行为差异
如果你非得拖选中的多行文本(比如函数块),DragSelect 是目前最接近 VS Code 拖放体验的插件,但它和原生行为不一致:
- 安装后,选中任意文本块,鼠标按住拖到目标行附近,松手即插入(不是交换)
- 它会自动处理空行和缩进对齐,但缩进风格(Tab/Space)不一致时可能错位
- ⚠️ 它会覆盖默认的
Alt+拖拽列选择行为,容易和多光标误操作冲突 - 拖拽过程中若意外松开 Alt 键(Windows/Linux),可能中途切回普通选择,导致粘贴失败
为什么 Ctrl+Shift+↑/↓ 不是“拖拽等效”?
很多人以为 Ctrl+Shift+↑ 是插入式移动,其实它调用的是 swap_line_up —— 本质是与相邻行交换,不是腾空插入:
- 选中第 5–7 行按
Ctrl+Shift+↑,结果是第 4 行和第 5–7 行整体交换,不是把这三行挪到第 1 行上方 - 贴到文件顶部再按,静默失败,无提示
- 缩进完全保留,跨作用域移动后常需手动用
Ctrl+[或Ctrl+]调整
真要“释放键盘纯鼠标”,就别碰选中文本拖拽——要么拖整行,要么装 DragSelect 并接受它和原生逻辑的割裂。最易被忽略的点是:拖拽前是否关闭了折叠代码块,否则拖进去的部分行会被跳过。











