多行选中崩溃的直接原因是sublime在plain text模式下仍启用gutter和line_numbers,导致拖选百万行时为每行生成dom节点并渲染高亮、折叠按钮等,叠加插件扫描选区引发cpu满载、ui线程卡死。

多行选中崩溃的直接原因是什么
不是内存溢出,也不是文件太大——而是 Sublime 在 Plain Text 模式下仍默认启用 gutter(行号区)和 line_numbers,当你用鼠标拖选百万行时,它会为每一行生成 DOM 节点并尝试渲染高亮背景、折叠按钮、断点图标等;一旦触发光标悬停或右键菜单,GitGutter 或 BracketHighlighter 还会立刻扫描整段选区做 diff 或括号匹配,CPU 瞬间 100%,UI 线程卡死。
怎么让多行选中不崩溃(已打开文件)
别等崩溃再救,选中前就该切断渲染链路:
- 按
Ctrl+Shift+P输入Set Syntax: Plain Text回车 —— 停掉语法解析器,避免正则匹配干扰选区计算 - 再输
View: Toggle Word Wrap关闭自动换行 —— 防止超长行在选中时反复重算软换行位置 - 右键状态栏语言名(如显示
Log),选Open all with current extension as… → Plain Text—— 让下次同后缀文件跳过所有“编辑预设” - 若已卡住且命令面板无响应,终端执行
subl --safe-mode your_file.log强制跳过插件和用户设置,实测 1.2GB 日志可支持 50 万行连续选中
用户设置里必须加的防崩溃配置
光临时关不够,得让 Sublime 从加载第一字节起就放弃“多行可交互”的幻想:
-
"large_file_size_limit": 100:单位 MB,≥100MB 文件自动跳过语法分析、折叠、符号索引(注意:不生效于已打开文件) -
"index_files": false:关后台全文索引,否则SublimeLinter和GitGutter会在你选中瞬间启动子进程扫全文 -
"gutter": false和"line_numbers": false:彻底移除行号区 DOM 节点,多行选中不再触发重绘瓶颈 -
"viewport_size": 5000:单次最多渲染 5000 字符(默认 100000),配合"word_wrap": false才有效,否则超长行仍拖垮渲染器 -
"ask_before_opening_large_files": false:不弹确认框,避免点了 Yes 后它还偷偷建索引、检测缩进
真正要小心的隐藏坑
很多人加了 large_file_size_limit 就以为万事大吉,但 Sublime 的崩溃常发生在“你以为已经轻量加载”的时候:比如你开了 BracketHighlighter 插件,默认会对任意选区跑括号匹配;又比如你设了 "highlight_line": true,光标一移到选区中间,它就开始高亮整行并触发 gutter 图标重绘。这些都不是“打开卡”,而是“选中崩”,且不会报错,只表现为 UI 冻结、鼠标消失、Ctrl+C 失效——这时候别硬等,直接关掉插件或切到 --safe-mode。











