如何在VIM中每隔指定行数插入递增编号?
在Vim中每隔N行插入递增编号的实现方法
以下是几种可行的实现方式,以你给出的N=2的场景为例:
方法一:宏录制(适合少量插入场景)
- 将光标移到第2行(即
c, d所在行)的任意位置 - 按下
q q开始录制宏到q寄存器 - 执行操作:
o(插入新行)→ 输入1→ 按Esc回到正常模式 → 按j j跳转到下一组行的末尾(即g, h行) - 按下
q停止录制 - 执行宏:输入
@q插入编号2,若需要更多编号,重复输入@@即可
方法二:正则+计数器(适合大量行的自动化处理)
- 先初始化计数器,在命令行输入:
let i=1 - 执行全局替换命令,在每2行后插入递增编号:
g/^\(.*\n.*\)$/put =i | let i=i+1
- 解释:
^\(.*\n.*\)$匹配连续两行内容,put =i将当前计数器值插入新行,let i=i+1实现计数器自增 - 如果需要调整N值,比如N=3,只需把正则改为
^\(.*\n.*\n.*\)$即可
方法三:手动结合表达式寄存器(灵活调整插入位置)
- 初始化计数器:
let i=1 - 将光标移到需要插入编号的位置,按
o新建行 - 按
Ctrl+r =,输入i后按回车,插入当前计数器值 - 执行
let i=i+1让计数器自增,重复步骤2-4完成后续插入
内容的提问来源于stack exchange,提问作者vinu
相关产品推荐
相关产品推荐

