notepad++原生列块编辑插入数字是唯一不依赖插件、能生成递增序号的方案:光标置首行最左端→alt+拖选→填初始值1、增量1、格式%d或%03d.;空行也会被编号,正则无法实现动态序号。

用列块编辑插入数字是最直接的原生方案
Notepad++ 没有“一键加行号”菜单,但编辑 → 列块编辑 → 插入数字是唯一不依赖插件、不写正则、能真正生成递增序号的原生路径。它绕过了^无法计数的限制,也比手动列编辑输数字+复制更可靠。
操作要点:
- 光标先放到第一行**最左端**(不是第一个字符,而是行首空白处),按
Home确保位置准确 -
Alt+ 鼠标左键从该位置垂直拖到最后一行行首,形成窄矩形选区(哪怕只有一列宽) - 调出
插入数字对话框,填:初始值1、增量值1、格式可选%d(纯数字)或%03d.(补零+点号) - 如果文档含空行,它们也会被编号——这是设计行为,不是 bug;若需跳过,得先删空行或用其他方式预处理
正则替换加前缀(如1. )不可行,但可加固定字符串
想用^正则批量加1. 、2. 这类动态序号?做不到。Notepad++ 的正则引擎不支持计数器或自增变量,^只能匹配位置,不能生成数字。
但它适合加固定前缀,比如统一加// 或[INFO] :
-
Ctrl+H→ 勾选「正则表达式」→ 查找内容填^→ 替换为填//→ 全部替换 - 若要跳过空行,改用
^(.+)$作查找内容,替换为// $1($1还原原行内容) - 加的内容含
$、.、\等,必须转义:如加$var =,得写成\$var =
Python Script 插件适合大批量、带格式的稳定编号
处理几百行以上、需要前导空格对齐、兼容\r\n/\n混用、或要嵌入当前时间戳时,Python Script插件是唯一可扩展的选择。
关键逻辑在脚本里:editor.getSelText()判断是否选中区域,再用for i, line in enumerate(lines)逐行拼接f"{i+1:03d}. {line}":
- 安装插件后,菜单栏
Plugins → Python Script → New Script,保存为add_line_numbers.py - 脚本里别直接用
editor.replace()全局替换——若原文本行首有缩进,可能误匹配;应先editor.getText()读全文,再按行处理 - 输出带等宽对齐时,用
f"{i+1:03d}. "比手敲%03d.更直观,且 Python 字符串格式化对 Unicode 友好
列编辑容易错位的几个真实坑点
列编辑看着简单,实际踩坑率很高,尤其当文本结构不规整时:
- 拖选时没对齐行首:某行缩进多两个空格,光标起始列就偏了,结果序号插在中间,破坏原格式
- 空行导致“视觉断层”:拖选跨过空行后,下一行的列位置会继承上一行末尾坐标,而非重置为行首
- 混合换行符干扰:Unix 格式(
\n)下,Alt+拖选有时无法垂直到底,因为 Notepad++ 渲染高度不一致 - 键盘布局陷阱:部分笔记本需按
Fn+Alt才能触发列选,单独按Alt无效
真正稳定的编号,永远取决于你是否提前清理了空行、统一了换行符(编辑 → 文档格式转换 → 转换为 Windows 格式),以及是否确认了光标起始点严格落在每行最左端。











