VIM - 实例: 多行复制

  1. 概述

    1. 多行复制
    2. 技术不难, 只是提供一个思路
  2. 背景

    1. 尝试某个场景, 多行复制
  3. 环境

1. 场景

  1. 概述

    1. 问题场景
  2. 问题

    1. 生成如下结果

      # t1
      # t1
      # t1
      # t1
      # t2
      # t2
      # t2
      # t2
      # t3
      # t3
      # t3
      # t3
      # t4
      # t4
      # t4
      # t4
      

2. 思路

  1. 概述

    1. 思路
  2. 思路

    1. step1

      # t1
      # t2
      # t3
      # t4
      
    2. step2

      1. 结果

3. 执行

  1. 概述
    1. 执行

1. step1

  1. 初始状态

    1. 结果

      # t1
      
  2. 复制

    1. 操作

      1. 定位到 t1 行
      2. 标准模式
      3. 输入 yy3p
    2. 结果

      # t1
      # t1
      # t1
      # t1
      
  3. 序列

    1. 操作

      1. 定位到 第二行 的 1
      2. 标准模式
      3. 输入 ctrl + v 切换到 v 模式
      4. 选到最下面的 1
      5. 输入 g
      6. 输入 ctrl + a
    2. 结果

      # t1
      # t2
      # t3
      # t4
      

2. step2

  1. 复制

    1. 操作

      1. 切换到 命令模式
      2. 输入命令 :% s/.*/\0\r\0\r\0\r\0\r/g
    2. 结果

      # t1
      # t1
      # t1
      # t1
      
      # t2
      # t2
      # t2
      # t2
      
      # t3
      # t3
      # t3
      # t3
      
      # t4
      # t4
      # t4
      # t4
      
      
  2. 后续空行

    1. 操作

      1. 命令 g/^$/d
    2. 结果

      # t1
      # t1
      # t1
      # t1
      # t2
      # t2
      # t2
      # t2
      # t3
      # t3
      # t3
      # t3
      # t4
      # t4
      # t4
      # t4
      

4. 后续

  1. 复杂内容

    1. 变化的部分, 不是连续数字
    2. 重复的次数, 次数不一样
  2. 思路

    1. 写简单 shell 脚本
    2. 用 模板 生成
    3. 这些都超出 vim 范畴, 就不在这里谈论了
    1. 其实也可以用 宏 的方式解决
      1. 但是好像也没有这么方便, 所以放弃了
        1. 可能是我做宏的能力有限吧
        2. 如果有 园友 可以提供其他优秀思路, 可以留言一起交流
posted @ 2020-07-25 09:53  轩辕拾銉  阅读(194)  评论(0编辑  收藏  举报