V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
raquant
V2EX  ›  Vim

Vim recording 入门

  •  
  •   raquant · 2017-03-22 13:47:43 +08:00 · 2797 次点击
    这是一个创建于 2804 天前的主题,其中的信息可能已经有所发展或是发生改变。
    上次小可发了个 vim 干货,真正见识到了 vim 版的强大,也认识到自己 vim 水平是多么的弱。
    同时也感谢各位好朋友给我推荐的链接和书籍,我也在根据大家提供的东西在不断学习。
    总之 vim 版友 opened my eyes ,让我知道世界之大,牛人之多!
    鉴于上次收藏 vim 入门文章的网友也还挺多的,我又冒死发一下 recording 的练习笔记,希望对新手有帮助。
    

    recording 是 vim 的一个强大功能。他可以录制一个宏( Macro),在开始记录后,会记录你所有的键盘输入,包括在 insert 模式下的输入、正常模式下使用的各种命令等。

    具体使用:

    第一步:在正常模式下(非 insert 模式、非 visual 模式)按下 q 键盘
    
    第二步:选择 a-z 或 0-9 中任意一个作为缓冲器的名字,准备开始录制宏
    
    第三步:正常的操作,此次所有的操作都会被记录在上一步中定义的缓冲器中
    
    第四步:在非 insert 模式下输入 q 停止宏的录制
    
    第五步:使用 @ + 第二步中定义的缓冲器的名字即可。
    

    简单场景 1

    下面的 System.out.println()都没有逗号,希望都给加上逗号。

    当然也可以用替换命令啊,可惜本文的设定就是 recording ,我们就只用 recording 功能了。

    System.out.println("xyz")
    
    System.out.println("x")      System.out.println("xy")  System.out.println("xy")
    
    System.out.println("xyz")
    
    System.out.println("xyzw")  System.out.println("xyzw")
    
    • gg 移动到页首
    • qt 记录到 t 寄存器
    • /)<enter> 寻找右括号
    • a;<esc> 添加分号
    • q 结束记录
    • @t @t @t @t 执行寄存器 t 里的命令,当然你也可以 4@t 啊

    运行结果:

    System.out.println("xyz");
    
    System.out.println("x");      System.out.println("xy");  System.out.println("xy");
    
    System.out.println("xyz");
    
    System.out.println("xyzw");  System.out.println("xyzw");
    

    简单场景 2

    下面这样一个文本, 5 行单词 quant ,我想用 recording 在每一行后面和前面都插入一些字。

    当然也可以用替换命令啊,可惜本文的设定就是 recording ,我们就只用 recording 功能了。

    quant
    
    quant
    
    quant
    
    quant
    
    • gg 移动到页首
    • $ 移动到行末
    • a.com 是一个用程序和大数据快速验证炒股理念的平台<esc> 加字儿退出
    • 0 移动到行首
    • ira<ctrl+[> 加字儿退出
    • j 移动到下一行,这个很关键,要不然批量执行的时候连贯不起来
    • q 退出 recording
    • 4@t 执行寄存器 t 里面的命令

    运行结果:

    raquant.com 是一个用程序和大数据快速验证炒股理念的平台
    raquant.com 是一个用程序和大数据快速验证炒股理念的平台
    raquant.com 是一个用程序和大数据快速验证炒股理念的平台
    raquant.com 是一个用程序和大数据快速验证炒股理念的平台
    raquant.com 是一个用程序和大数据快速验证炒股理念的平台
    
    2 条回复    2017-04-12 18:53:46 +08:00
    gooin
        1
    gooin  
       2017-03-22 18:33:08 +08:00 via Android
    年前刚从《 Vim 实用技巧》里边学到😂。
    KentY
        2
    KentY  
       2017-04-12 18:53:46 +08:00
    nesting(recursive) macro 有时候挺有用, 特别是不知道要 replay 多少次的时候.
    还有直接 @='.......'<cr> 也是 vimgolf 时候的常用伎俩...
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1180 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 17:55 · PVG 01:55 · LAX 09:55 · JFK 12:55
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.