notepad++ 无法直接用查找替换生成递增序列,需借助 python script 插件执行脚本遍历行号插入编号;内置列块编辑虽轻量但不支持缩进和空行。

Notepad++ 本身不提供“运行代码生成序列”的能力,所谓“用代码生成序列数字”,实际是借用了它的 Python Script 插件来执行 Python 脚本——不是在编辑器里写业务逻辑代码,而是用脚本控制编辑器 API 批量插入数字。这个动作和你在终端跑 Python 脚本本质一样,只是执行环境嵌在 Notepad++ 里。
为什么不能直接用“查找替换”或正则生成递增序号
因为 查找替换 的正则引擎(PCRE)不支持动态计数器。你写 \d+ 只能匹配已有数字,$0 或 $1 只能回溯已有内容,没法让每行替换结果变成“1、2、3…”。试图用 ^ 匹配行首再替换成 1.,结果全是 1. ——它不会自动累加。
- 常见错误现象:
查找替换中输入^→ 替换为1.,所有行都变成1. 原内容 - 真正需要的是“第 N 行就插第 N 个数”,这必须靠脚本遍历行号实现
- 如果你没装
Python Script,菜单里根本不会出现Plugins → Python Script这一项
装完 Python Script 后,三步写个可靠编号脚本
核心不是写多复杂的 Python,而是调用 editor.getLineCount() 和 editor.replace() 配合行偏移。下面这个脚本能处理空行、保留原有缩进,且不破坏换行符:
import re
line_count = editor.getLineCount()
for i in range(line_count):
line_text = editor.getLine(i)
# 只对非空行加序号,避免在空行插 "1. "
if line_text.strip():
# 获取行首空白(缩进),保证序号左对齐
leading_ws = re.match(r'^(\s*)', line_text).group(1)
new_line = f"{i+1}. {line_text.lstrip()}"
editor.replaceLine(i, leading_ws + new_line)
- 把这段存为
add_numbers.py,放在%AppData%\Notepad++\plugins\config\PythonScript\scripts\目录下 - 重启 Notepad++,按
Plugins → Python Script → Scripts → add_numbers即可执行 - 如果想改格式,只改
f"{i+1}. "这部分就行,比如f"({i+1}) "或f"{i+1:03d}. "(三位补零)
用内置“列块编辑+插入数字”更轻量,但有硬限制
不用装插件,编辑 → 列块编辑 → 插入数字 是最快路径,但它只适合“纯文本、无缩进、无空行”的干净列表。一旦原文本行首有空格或制表符,插入的数字会覆盖缩进,导致对齐错乱。
- 典型翻车场景:原始文本每行开头有两个空格,你列选行首后插
1,结果变成1 一行内容,缩进没了 - 正确做法:先用
编辑 → 行操作 → 删除行首空格清理,再列选;或者列选时从第一个非空字符位置开始拖(比如第三列),而非第一列 - 增量值填
0会全插同一个数,填-1就倒序,别填错
真正麻烦的不是怎么加序号,而是加完之后要不要维护——比如中间插入一行,后续序号是否要重排。内置功能做不到自动重排,Python 脚本可以封装成带“重编号”按钮的工具,但那就超出单次批量处理的范畴了。











