Sublime Text 不支持鼠标拖拽移动选中文本,因其底层未实现该功能;用户真正需禁用的是文件拖放导致的覆盖,应设置 "enable_drag_drop": false。

Sublime Text 本身就不支持鼠标拖拽移动选中文本——你拖不动,不是设置没开,是压根没这个功能。
它没有类似 VS Code 的 editor.dragAndDrop 开关,因为底层根本不实现文本块拖放(drag-and-drop text repositioning)。所谓“禁止”,其实是误判了前提:你根本不需要去关一个不存在的东西。
为什么 Ctrl+鼠标拖拽没反应?
这不是 bug,是设计如此:
-
Ctrl+鼠标左键拖拽(Windows/Linux)或Cmd+拖拽(macOS)默认触发「多光标添加」,不是移动文本 - 若已处于列选择模式(状态栏显示
Column Select),该操作会被忽略或意外粘贴 - 系统级拖放(比如从网页拖文字进 Sublime)能接收,但反向——选中后拖着走——Sublime 不响应
想“禁用拖拽移动”,实际要防的是什么?
用户真正想防的,通常是这两类误操作:
- 拖文件到编辑区,导致当前文件内容被替换(对应配置:
"enable_drag_drop": false) - 拖文件到空标签页,直接覆盖打开(对应配置:
"drag_text": false)
这两个才是 Sublime 真正可干预的拖放行为。它们和“移动选中文本”无关,但名字容易混淆。
如何关闭文件拖放导致的覆盖?
打开 Preferences → Settings,在右侧用户设置里添加或修改:
"enable_drag_drop": false,
保存后,拖文件进编辑区将完全无响应(不会替换、不会打开、不会弹错),这是最彻底的防护。
注意:"drag_drop": false 是另一个旧配置项,仅影响拖文件到侧边栏/项目区的行为,对编辑区无效;别混用。
插件装了也拖不动?那是正常现象
即使装了 DragSelect 或 MoveLines,它们提供的也不是原生拖拽移动,而是模拟插入逻辑:
-
DragSelect支持鼠标拖到目标行后自动插入,但依赖光标落点识别,不是自由拖放 -
MoveLines提供move_lines_to_line命令,需手动定位目标行再执行,本质仍是命令式位移 - 所有插件都无法绕过 Sublime 底层限制,做不到 VS Code 那种带插入线提示的实时拖放体验
真正的“拖拽移动文本”在 Sublime 里不存在,也就谈不上“禁止”。你要防的,只是文件拖放带来的副作用——而那个开关,早就藏在 enable_drag_drop 里了。


















