Sublime Text 的 Insert Numbers 命令可快速生成递增/递减数字序列,仅作用于多光标位置,默认从0开始、步长为1,支持通过自定义快捷键设置起始值和步长,不修改现有数字,适用于生成ID、序号等新序列。

用 Ctrl+Shift+P 调出命令面板,输入 Insert Numbers 是最快路径
Sublime Text 自带的 Insert Numbers 命令(无需插件)专为生成递增/递减数字序列设计,比手动输入、正则替换或写脚本更直接。它只作用于当前光标所在行的多个选区(即多光标),不依赖文件内容结构,也不需要提前选中数字——你只需把光标放在要插入数字的位置即可。
常见错误是试图先选中已有数字再运行该命令:它不会修改现有数字,而是「在每个光标位置插入新数字」。所以适合生成 ID 列表、序号、索引等从零开始的新序列。
- 确保已启用多光标:按住
Ctrl(Windows/Linux)或Cmd(macOS),逐个点击目标行首/行尾位置;或用Ctrl+Click框选多个光标点 - 执行
Insert Numbers后,默认从0开始,步长为1;如需从1开始,可在命令面板里输入Insert Numbers: Start from 1 - 若想递减,先用多光标选好位置,再运行
Insert Numbers,随后立即按Ctrl+Z撤销一次,再手动把第一个数字改成终点值(比如100),然后用Ctrl+D选中它,再Ctrl+Shift+L拆成多光标,最后按↓键降序填充(此法依赖Selection → Expand Selection to Line配合方向键,非原生命令但稳定)
Insert Numbers 的起始值和步长在哪改?
Sublime Text 没有图形化设置面板调整 Insert Numbers 的参数,所有配置都通过命令参数或快捷键绑定实现。默认行为固定,但你可以自定义快捷键来触发不同参数组合:
- 打开
Preferences → Key Bindings,在右侧用户键绑定中添加:
[
{
"keys": ["ctrl+alt+n"],
"command": "insert_numbers",
"args": {"start": 1, "step": 1}
},
{
"keys": ["ctrl+alt+d"],
"command": "insert_numbers",
"args": {"start": 100, "step": -1}
}
]
保存后,Ctrl+Alt+N 插入 1,2,3...,Ctrl+Alt+D 插入 100,99,98...。注意:step 为负数时,数字自动递减,无需额外操作。
容易忽略的是:如果多光标不在同一列(比如有的在行首、有的在行中),Insert Numbers 仍会插入,但可能破坏对齐。建议先统一光标位置(例如全选行首:按 Ctrl+Shift+L 选中所有行,再按 Home 移到行首)。
遇到「重复插入」「跳号」或「不生效」怎么办?
这些不是 Bug,而是多光标状态或命令触发时机的问题:
-
重复插入:多光标中有重叠区域(比如两个光标在同一行且距离过近),导致同一位置被多次写入。解决方法是用
Ctrl+Shift+P输入Select → Select All清空当前选区,再重新打多光标 -
跳号:比如期望
1,2,3却得到1,3,5,说明之前运行过一次Insert Numbers后又手动改了某个数字,再运行时 Sublime 会基于「当前光标所在行的最后一个数字」推算步长。此时应全部撤销(Ctrl+Z× 多次),重置光标再试 -
不生效:最常见原因是没激活多光标——单光标下运行该命令只会插入一个数字(
0)。确认右下角状态栏是否显示x selections(如5 selections)
替代方案:正则替换 + 计算表达式(适合已有文本改造)
当你要给已有列表加序号(比如把 apple 变成 1. apple),Insert Numbers 不适用,得用正则替换配合 transform 功能:
- 打开替换面板(
Ctrl+H),勾选Regular Expression - 查找:
^(匹配每行开头) - 替换:
\n(留空)→ 不对,这里要用 Sublime 的transform表达式:实际填$0\${1}不行;正确做法是启用Tools → Transform → Increment Number,但它只对已存在数字有效 - 更可靠的是:先用
Ctrl+Shift+L选中所有行首,再运行Insert Numbers,再输入.和空格,最后用Ctrl+Shift+P运行Sort Lines(如果顺序乱了)
真正需要动态计算的场景(如按公式生成 id="item-001"),还是推荐用 Python 或 JS 写个一次性脚本粘贴进 Sublime 控制台(Ctrl+`),而不是硬套编辑器功能。编辑器的数字插入能力,本质是「批量占位符填充」,不是「通用序列引擎」。










