1、需求
有如下文本,现在对该文本添加行号:
apple inc, macbook pro
apple inc, macbook pro
apple inc, macbook pro
apple inc, macbook pro
apple inc, macbook pro
apple inc, macbook pro
apple inc, macbook pro
也就是最终达到如下效果:
1 apple inc, macbook pro
2 apple inc, macbook pro
3 apple inc, macbook pro
4 apple inc, macbook pro
5 apple inc, macbook pro
6 apple inc, macbook pro
7 apple inc, macbook pro
这里要实现的就是在Vim中批量填入序列。
2、思路和难点
这种自增操作肯定是要用到变量累加,这十分容易:let i=i+1
即可。接下来的难点是如何将变量的值插入到Vim中,这里有两种方法:
-
Ctrl+R
方法在Vim中,通过
Ctrl+R
可以很方便地将一个寄存器的值插入到Vim中。同样的,通过它也可以将一个变量的值插入到Vim中:在insert模式下,按下Ctrl+R
,按下=变量名
,回车即可。 -
寄存器方法
通过执行
:let @a=i
,可以将变量i的值赋给寄存器a,这样,通过"ap
就可以将变量的值粘贴到Vim中了。
3、具体操作
具体操作的整个流程肯定是通过Vim的宏来串联起来的,下面逐一介绍。
3.1 Ctrl+R
方法
首先执行:let i=1
,给Vim变量i赋初值1。然后,就可以开始录制宏(qn
)了。这个宏包含如下步骤:
- 移动到行首,然后切换到insert模式。
- 利用
Ctrl+R
插入变量i的值作为行号,同时插入空格作为行号和内容之间的分隔。 - 切换到normal模式
- 移动光标到下一行
- 执行
:let i=i+1
让变量的值自增 -
q
结束宏录制
录制完宏之后,可以通过@n
来执行该宏,也可以在前面加执行次数,如5@n
来连续执行该宏。
通过"np
,可以查看该宏的完整内容:
3.2 寄存器方法
寄存器的方法类似,只有插入行号变量的部分不同。
首先执行:let i=1
,给Vim变量i赋初值1。然后,就可以开始录制宏(qn
)了。这个宏包含如下步骤:
- 移动到行首。
- 执行
:let @a=i
将变量i的值赋给寄存器a。 - 利用
"aP
插入寄存器a的内容作为行号 - 插入空格作为行号和内容之间的分隔。
- 切换到normal模式
- 移动光标到下一行
- 执行
:let i=i+1
让变量的值自增 -
q
结束宏录制
录制完宏之后,可以通过@n
来执行该宏,也可以在前面加执行次数,如5@n
来连续执行该宏。
通过"np
,可以查看该宏的完整内容:
4、结
希望对大家有帮助。