Skip to content

功能建议 Feature Request #738

Description

@wanghlstar

问题描述

当前 Notepad-- 创建大的矩形列选区,可以用光标定位首行,Alt+Shift + 鼠标点击末尾完成选区,选中动作本身正常。
但是当选中行数达到几万行级别,直接键盘输入字符(单引号、逗号等)编辑器就会严重卡顿。
根源来自Scintilla组件:会为每一行都生成独立实时光标,每一次按键都要刷新渲染全部光标,UI开销爆炸。

自带的【列块编辑窗口】是后台批量处理,不走实时多光标渲染,处理同等规模数据非常流畅。

UltraEdit 的交互参考(截图场景)

在UE中,我可以先普通全选一大段多行文本,按下快捷键 Alt+C,直接把普通行选区一键切换为列模式(垂直矩形选区)。
UE内部只记录元数据:起始行、结束行、目标列位置。不会为每一行生成实时光标,界面只有列指示标记,即便几十万行,直接键盘输入字符也是后台批量写入,全程不会卡顿。

使用场景

日常处理数据库查询输出的对齐多列文本,类似截图这种拼接where条件文本,3‑5列,批量生成 UPDATE / WHERE SQL语句。
经常要在固定垂直列位置批量补充单引号、逗号、分号、自定义字符串,文件规模上万到几十万行。

当前两套工作流性能差距明显:

  1. 选中矩形选区 → 打开【列块编辑窗口】填入文本执行:流畅,后台批量处理 ✅
  2. 选中矩形选区 → 直接键盘打字输入字符:卡顿,海量实时光标渲染 ❌

我非常习惯UE这套交互:普通选区随时一键切换列模式,切换完直接打字,不需要再手动打开菜单弹窗。

期望功能

优先参考UltraEdit的设计实现:

  1. 增加快捷键(类似 UE Alt+C):已经选中普通多行选区时,一键切换到「轻量列模式状态」。
  2. 轻量列模式内部只保存元数据:起始行、结束行、目标列,不生成每行实时光标,界面仅渲染列指示器标记。
  3. 在该模式下直接键盘输入,复用现有【列块编辑窗口】后台批量写入逻辑,不走多光标实时渲染。
  4. 做阈值兼容:小行数保留现有多光标可视化;超过可配置阈值(例如>2000行)自动启用轻量元数据模式。
  5. 再次按快捷键,可以切回普通行选区。

备选降级方案(改动小,如果上面实现难度大):
矩形选区激活状态,增加快捷键一键唤起【列块编辑窗口】,自动预填当前选区行、列范围,减少菜单点击。

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions