Vim批量插入数字序列

作者: SpaceCat | 来源:发表于2017-01-06 23:50 被阅读167次

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,可以查看该宏的完整内容:

屏幕快照 2017-01-06 下午11.53.43.png

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,可以查看该宏的完整内容:

屏幕快照 2017-01-06 下午11.54.55.png

4、结

希望对大家有帮助。

相关文章

网友评论

    本文标题:Vim批量插入数字序列

    本文链接:https://www.haomeiwen.com/subject/zbgxbttx.html