功能建议 Feature Request
Author: wanghlstarCreated Sep 11, 2026Updated Sep 11, 2026
问题描述
当前 Notepad-- 创建大的矩形列选区,可以用光标定位首行,Alt+Shift + 鼠标点击末尾完成选区,选中动作本身正常。
但是当选中行数达到几万行级别,直接键盘输入字符(单引号、逗号等)编辑器就会严重卡顿。
根源来自Scintilla组件:会为每一行都生成独立实时光标,每一次按键都要刷新渲染全部光标,UI开销爆炸。
自带的【列块编辑窗口】是后台批量处理,不走实时多光标渲染,处理同等规模数据非常流畅。
UltraEdit 的交互参考(截图场景)
在UE中,我可以先普通全选一大段多行文本,按下快捷键 Alt+C,直接把普通行选区一键切换为列模式(垂直矩形选区)。
UE内部只记录元数据:起始行、结束行、目标列位置。不会为每一行生成实时光标,界面只有列指示标记,即便几十万行,直接键盘输入字符也是后台批量写入,全程不会卡顿。
使用场景
日常处理数据库查询输出的对齐多列文本,类似截图这种拼接where条件文本,3‑5列,批量生成 UPDATE / WHERE SQL语句。 经常要在固定垂直列位置批量补充单引号、逗号、分号、自定义字符串,文件规模上万到几十万行。
当前两套工作流性能差距明显:
- 选中矩形选区 → 打开【列块编辑窗口】填入文本执行:流畅,后台批量处理 ✅
- 选中矩形选区 → 直接键盘打字输入字符:卡顿,海量实时光标渲染 ❌
我非常习惯UE这套交互:普通选区随时一键切换列模式,切换完直接打字,不需要再手动打开菜单弹窗。
期望功能
优先参考UltraEdit的设计实现:
- 增加快捷键(类似 UE
Alt+C):已经选中普通多行选区时,一键切换到「轻量列模式状态」。 - 轻量列模式内部只保存元数据:起始行、结束行、目标列,不生成每行实时光标,界面仅渲染列指示器标记。
- 在该模式下直接键盘输入,复用现有【列块编辑窗口】后台批量写入逻辑,不走多光标实时渲染。
- 做阈值兼容:小行数保留现有多光标可视化;超过可配置阈值(例如>2000行)自动启用轻量元数据模式。
- 再次按快捷键,可以切回普通行选区。
备选降级方案(改动小,如果上面实现难度大): 矩形选区激活状态,增加快捷键一键唤起【列块编辑窗口】,自动预填当前选区行、列范围,减少菜单点击。
Source: cxasm/notepad--