notepad++通过列块编辑+插入数字可精准为每行开头添加序列号,无需插件且不破坏缩进;alt+鼠标拖选进入列块模式后执行“编辑→列块编辑→插入数字”,设置初始值、增量值和格式(如%03d、[id]%d)即可实现多种编号需求。

Notepad++ 本身不提供“自动递增行号”的一键菜单,但通过 列块编辑 + 插入数字 组合,能稳定、精准地为任意选区每行开头添加序列号——这是最可靠、无需插件、不依赖正则、不破坏缩进的原生方案。
用 Alt + 鼠标拖选进入列块模式,再调用 插入数字
这是唯一推荐的起手式。不要试图用查找替换模拟递增(^ 只能匹配位置,无法生成动态数字),也不要手动 Ctrl+D 复制粘贴——超过 10 行就极易错位或漏行。
- 光标置于第一行**行首字符前**(不是第一个可见字符,而是最左侧空白处)
- 按住
Alt不放,鼠标左键从该位置垂直向下拖到目标末行行首,松开后出现矩形高亮 - 点击菜单
编辑 → 列块编辑 → 插入数字(快捷键无默认绑定,建议记牢路径) - 对话框中:
初始值填 1,增量值填 1,格式留空即输出纯数字;若需1.,直接在格式框输入1.(注意空格)
插入数字 的格式字段支持变量占位,但不支持算术表达式
它不是编程语言模板引擎,格式 框只接受静态字符串 + 占位符 %d(等价于 C 风格的整数占位)。比如填 第%d条:,会生成 第1条:、第2条:……但不能写 %d-1 或 %d*2。
- 想实现偶数编号(2,4,6…)?改
增量值为 2,初始值设为 2 - 想补前导零(001,002…)?
格式填%03d(三位宽度,不足补零) - 想加固定前缀如
[ID]?格式填[ID]%d,结果是[ID]1、[ID]2 - 若原文本行首已有缩进(空格或 Tab),列块选区会包含这些空白——序号将插在缩进之后,视觉上不对齐;此时应先统一删除缩进,或手动调整列选起点
空行、注释行、缩进不一致时,列块编辑 仍可工作,但需预判选区高度
列块编辑不分析内容,只认物理位置。这意味着:空行会被同样处理(插上序号后变成 1 + 换行),而缩进过长的行可能被截断(列选区域不够宽)。
- 若文件含大量空行且不想编号,先用
Ctrl+H→ 正则^\s*$替换为空(勾选“正则表达式”),再执行列块操作 - 若各行缩进差异大(如混有 2/4/8 个空格),列块拖选时务必拖到最长缩进行的行首位置,否则短缩进行会被“挤”出选区
- 不确定是否选准?按
Esc取消选区,再按Ctrl+Shift+I(列块编辑 → 显示列块指示器)看当前列位置数字 - 误操作后序号错位?
Ctrl+Z撤销比手动修复快得多——列块编辑不可逆,没有“重做列块”功能
真正需要跨文件、带逻辑判断的批量编号,请用 Python Script 插件
当需求超出“每行开头加数字”:比如跳过以 # 开头的注释行、只给含特定关键词的行编号、或生成嵌套序号(1.1, 1.2, 2.1…),插入数字 就力不从心了。这时必须转向脚本。
- 安装插件后,新建脚本,核心是调用
editor.getCurLine()和editor.replace(),而非依赖 UI 对话框 - 关键陷阱:直接用
editor.replace(0, editor.getTextLength(), ...)会破坏换行符;应逐行遍历,用editor.getLineEndPosition(i)获取每行真实结尾 - 脚本里可自由处理
\r\n/\n差异,而 UI 的插入数字在 Unix 格式文件中可能对不齐——这点常被忽略











