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