regex - vi 序列号生成

标签 regex vi vim

我需要在 vi 中创建一个文件用这种模式。有没有办法使用第一行自动生成这些行

run 1 end
run 2 end
run 3 end
run 4 end
run 5 end
run 6 end

我总是可以在 excel 中执行此操作,然后将其转换为文本文件,然后切换到 vi ,但想知道是否有办法在 vi 中做到这一点这样我就不必切换回 excel

最佳答案

:help ctrl-a
^a 增加光标下的数字,您可以在宏中使用它。对于您的情况,假设您有第一行并且光标在其上:

qaYpw^aq4@a

应该做的伎俩。这是帮助页面中概述的技术,使用 w 进行了修改。将光标向前移动到数字。分解它:
  • qa开始在寄存器中记录宏 a
  • Y猛拉当前行
  • p将 yank 缓冲区放在当前位置下方并移动到新行的第 1 列
  • w向前移动一个字(到数)
  • ^a增加数字
  • q停止录制宏
  • <count>@a应用宏

    另一种技术是使用外部工具。例如,如果您已经有了该行并且光标在其上:
    !!awk '1;{for(i=0;i<5;i++){$2+=1; print}}'
    
  • 关于regex - vi 序列号生成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13734430/

    相关文章:

    vim - vim 的曝光配色方案和不正确的背景颜色

    regex - 替换 Simulink 模块名称中的非法字符

    regex - 处理大量用户定义的正则表达式的最佳方法是什么

    r - 在 R 上时将 vi 模式转换为 emacs 模式

    linux - 了解 vi 编辑器的内部结构

    linux - vim 的全局目录侧边栏

    java - 使用正则表达式运行计算器程序时出现 NumberFormatException

    regex - 如何使用正则表达式验证电子邮件地址?

    增加数字的vim列

    c++ - 用于探索由 c/c++ 编写的宏的 vim 插件