Alt+鼠标拖选列编辑最稳,本质是列模式删除,需关闭自动换行、不松Alt键;正则^.{N}易因编码、字符宽度出错;复杂场景建议用cut/PowerShell/Python脚本。

用 Alt + 鼠标拖选做列编辑最稳
这不是正则能优雅解决的场景,本质是「列模式删除」。Alt 拖选直接、可控、所见即所得,尤其适合固定宽度前缀(如编号、时间戳、空格缩进)。
- 按住
Alt键不放,鼠标移到第一行要删的起始列(比如第 1 列),左键按下并向下拖到最后一行对应列 - 松手后形成纵向选区,直接按
Delete或Backspace——中间不能松开Alt,也不能点其他地方 - 必须关闭「自动换行」(
View → Word wrap不勾选),否则拖选错位 - 某行不足 N 字符时,删到行尾为止,不会报错;但也不会补空或对齐,后续需手动处理
正则 ^.{N} 只在严格条件下可用
想用正则,得确认:所有目标行前 N 个字符都真实存在、无 BOM/零宽字符干扰、且全是 ASCII 单字节字符。否则极易出错。
-
^.{N}看似简洁,但.在 Notepad++ 中不匹配\r\n,却可能误吞\t或 UTF-8 多字节字符的前几个字节,造成乱码 - 含中文或 emoji 的行,
^.{3}可能只删掉 1 个汉字的前 3 字节,文本损坏 - 某行只有 2 个字符时,
^.{3}完全不匹配,删不掉——你得额外加一条^.{1,2}$,逻辑立刻变复杂 - 真正可用的场景极少:比如日志里每行开头都有统一的 4 位英文编号(
0001、ABCD),且文件编码干净、无隐藏字符
删前 N 个字符 + 保留对齐,得靠外部工具
当列编辑太费眼、正则又不敢用,且需要 Unicode 安全、字符计数准确时,别硬扛 GUI,换命令行或脚本。
- Linux/macOS:
cut -c24- input.txt > output.txt(删前 23 个字符,从第 24 列开始取) - PowerShell:
Get-Content input.txt | ForEach-Object { $_.Substring(23) } > output.txt - Notepad++ 内置 Python 脚本(需安装 PythonScript 插件):
editor.forEachLine(lambda line, i: editor.replaceWholeLine(i, editor.getLine(i)[23:])) - 这些方式不依赖渲染逻辑,支持 UTF-8 全字符集,也避开大文件卡顿问题
容易被忽略的细节
列编辑时若松开 Alt 再按 Delete,选区就没了;正则替换前没点「全部查找」预览,可能把注释里的 line 123 或 JSON 字段 "id":456 一起干掉;而所谓「行号」其实是 Notepad++ 界面显示,不是真实字符——你删的从来都不是它。


















