最稳路径是先布多光标再用insert numbers或insertnums:原生命令仅响应多光标,单光标只插一个数;insertnums需严格输入整数格式(如1 1),不支持小数、字母、中文符号;带前缀或补零须分步操作;列选+increment selection是唯一可控竖向递增方案。

Sublime 里想在每行开头插 1、2、3… 这类递增序号,最稳的路径就一条:先布多光标,再用 Insert Numbers 或 InsertNums 插件。单光标执行命令,它只插一个数,不报错也不提醒——这是设计行为,不是 bug。
为什么 Insert Numbers 没反应?多光标是硬门槛
Insert Numbers 是 Sublime 原生命令,但只响应多光标位置,不响应“选中多行”。你拖选 10 行文字再执行,它只在第一行光标处插一个数(通常是 0)。
- 正确做法:
Ctrl+Shift+L(Windows/Linux)或Cmd+Shift+L(macOS)选中所有目标行 → 再按Home把所有光标移到行首 - 手动布光标也行:按住
Ctrl(或Cmd)+ 鼠标左键,在每行开头点一下 - 用
Ctrl+D重复选中相同词再执行?不行。Sublime 把它当“单次替换”,所有光标都插同一个值(比如全填 1)
InsertNums 插件怎么输参数才不失败?格式必须严格
InsertNums 是目前最可靠的递增插件,但它对输入框格式极其敏感,错一个字符就退化成“全填相同值”。
- 只接受两个整数,用空格或逗号分隔:
100 5或100,5都行 - 禁止出现小数(
100.5)、单位(100px)、字母(100a)、中文符号或冒号(100:5) - 只输一个数(如
42)→ 每行都插 42;输100 -1→ 100、99、98…(注意负号前有空格) - 起始值或步长含小数会被截断为整数,比如
100.7 2.3实际等价于100 2
想带前缀或补零?不能一步到位,得拆开做
InsertNums 和原生命令都只插纯数字,不拼接字符串、不自动补零。要生成 user_0001、user_0002 这类结果,必须分两步:
- 先统一加前缀:用
Ctrl+Shift+L选中所有行 →Home移光标 → 输入user_ - 再跑
InsertNums:光标仍在行首,输入1 1,得到user_1、user_2… - 补零只能靠列选 + 手动:先列选数字列(
Ctrl+Alt+↑/↓),全输0001→ 再用Increment Selection递增(该命令支持列内自增,且保持位数)
列选 + Increment Selection 是唯一可控的竖向递增方案
当你需要严格对齐某列(比如 CSV 第二列、日志时间戳右侧),且起始值/步长都要精确控制时,Increment Selection 是目前唯一不依赖正则、不跳过空行、不污染上下文的方案。
- 必须是矩形列选区:
Ctrl+Alt+鼠标拖拽或Ctrl+Alt+↑/↓,普通拖选无效 - 选中后执行
Increment Selection,默认从 1 开始、步长为 1;想改,得先手动输起始值(比如全选一列后敲100),再执行命令 - 它不解析内容,只对选区内的纯数字做 +1 操作,所以前提是列里已经填好初始值(哪怕只是占位符)
真正容易被忽略的点是:光标是否对齐,决定了数字插在哪;而参数格式是否干净,决定了它到底插的是序列还是重复值。这两步出错,整个操作就静默失效——没提示、没报错、也没回退,你得自己盯住光标和输入框。











