Notepad++中用列编辑手动添加递增序号效率低,推荐使用Python Script插件编写脚本自动编号,支持前导空格、等宽对齐及跨平台换行符适配,真正实现稳定批量处理。

如何用列编辑模式在每行开头插入递增序号
Notepad++ 本身不支持“自动填充递增数字”的原生功能,但通过列编辑(Column Mode)配合手动输入+复制粘贴,可以快速实现每行开头加序号。关键不是靠菜单点选,而是用 Alt + 鼠标拖选进入列选,再结合数字键和 Ctrl+D(行复制)或 Ctrl+Shift+Alt+↓(多行光标)来批量生成。
- 先确保文档每行是独立内容(无空行干扰),光标放在第一行开头
- 按住
Alt,用鼠标从第一行开头向下拖选到最后一行开头(形成一个竖直的列选区域) - 松开
Alt后直接输入起始数字,比如1,所有选中行开头都会变成1 - 接下来不能直接输
2——那样会覆盖全部;要用Ctrl+D复制当前行,再用方向键移到下一行,删掉旧数字、输入新数字;更高效的是:Ctrl+Shift+Alt+↓在下一行新增一个光标,然后输入2,再继续向下加光标输3……但超过 10 行就明显吃力
用 Python 脚本插件真正实现自动递增编号
如果你装了 Python Script 插件(推荐用官方插件管理器安装),这才是能一次性处理几百行的可靠方式。它绕过了列编辑的手动瓶颈,直接读取当前选区或全文行数,生成带前导空格/制表符的序号。
- 安装插件后,菜单栏选择
Plugins → Python Script → New Script,保存为add_line_numbers.py - 脚本核心逻辑是:获取当前选区行数 → 遍历每行 → 在行首插入
f"{i+1}. "或类似格式 - 注意:如果原文本行首有缩进,
editor.replace()可能误匹配;建议先用editor.getSelText()判断是否全选,再决定处理范围 - 示例片段:
for i, line in enumerate(editor.getText().splitlines()): editor.replace(f"^{line}", f"{i+1}. {line}")—— 这里^是正则锚点,需开启正则模式,且editor.replace()默认不支持多行匹配,实际要用editor.addText()+ 光标定位更稳妥
为什么不用宏录制?它在这里基本失效
Notepad++ 的宏只记录按键动作,无法识别“当前是第几行”。你录一个“输1→回车→输2→回车”,播放时只会机械重复“1回车2回车”,不会自动变成“1回车2回车3回车……”。对 5 行有效,对 50 行就是灾难。
- 宏适合固定步骤(如统一加引号、删某列),不适合变量逻辑
- 哪怕配合
Ctrl+Shift+Alt+↓手动铺光标,超过 20 行就容易漏行或错位 - 如果必须用纯内置功能,唯一可行的是:先用
Find → Replace把换行符替换成\n2.,再把首行改成1.——但这要求所有行末必须是\r\n,且不能有空行,兼容性差
容易被忽略的格式细节:对齐与分隔符
加完序号后,如果数字位数不一(比如 1~100),默认左对齐会显得杂乱。很多人卡在这一步,以为功能没生效,其实是没处理视觉对齐。
- 用列编辑再次选中所有序号列(从第 1 行的
1拖到最后一行的100),按Space补零或空格,再整体右对齐(需配合字体等宽) - 更稳的方式是:用 Python 脚本输出时就用
f"{i+1:3d}. "控制宽度,3 代表至少占 3 字符,自动补空格 - 注意 Windows 和 Unix 换行符差异:
\r\nvs\n,脚本里用editor.getEOLMode()判断,避免跨平台后序号错位

















