在 Vim 中有多种给文本添加序号的方法,以下是最常用的几种:
方法一:使用 :s 替换命令配合表达式(推荐)
1. 基础数字序号
:%s/^/\=line('.').'. '/ " 给所有行添加 '1. ' '2. ' 格式序号
:1,10s/^/\=line('.').'. '/ " 给第1-10行添加序号
:.,.+39s/^/\=(line('.')-line('.')).' '/g " 从当前光标开始2. 自定义格式的序号
" 添加带括号的序号:(1)、(2)...
:%s/^/\='('.line('.').') '/
" 添加两位数字序号:01、02...
:%s/^/\=printf('%02d. ', line('.')-line("'<")+1)/方法二:使用宏录制(适用于复杂情况)
- 在第一行按
qq开始录制到寄存器 q - 按
I1.添加序号(注意有空格) - 按
<Esc>然后j到下一行 - 按
q结束录制 - 执行
10@q给后续10行添加递增序号
方法三:使用 :g 全局命令
" 给所有非空行添加序号
:let i=1 | g/^/s/^/\=printf('%d. ', i)/ | let i=i+1方法四:使用外部命令(Linux/macOS)
" 使用 nl 命令
:%!nl -ba -w2 -s'. ' " -ba 所有行编号,-w2 宽度2,-s'. ' 分隔符
" 使用 cat 命令
:%!cat -n " 简单添加行号
:%!cat -n | sed 's/^ */& /' " 调整格式方法五:使用插件
如果经常需要编号,可以安装插件:
vim-renumber:专门的重新编号插件visincr:支持多种递增模式
实用示例
示例1:给选中区域添加序号
1. 进入可视模式(V)
2. 选择多行
3. 输入 :'<,'>s/^/\=line('.').'. '/示例2:从特定数字开始编号
" 从数字5开始编号
:let n=5 | %s/^/\=printf('%d. ', n)/ | let n=n+1示例3:仅给特定模式的行编号
" 只给以大写字母开头的行编号
:let i=1 | g/^[A-Z]/s/^/\=printf('%d. ', i)/ | let i=i+1小技巧
- 使用
Ctrl+R =可以插入表达式计算结果 :set number可以显示行号(仅显示,不实际插入文本)- 对于大量行的编号,方法一通常最有效率


