VIM - 实例: 多行复制
-
概述
- 多行复制
- 技术不难, 只是提供一个思路
-
背景
- 尝试某个场景, 多行复制
-
环境
1. 场景
-
概述
- 问题场景
-
问题
-
生成如下结果
# t1 # t1 # t1 # t1 # t2 # t2 # t2 # t2 # t3 # t3 # t3 # t3 # t4 # t4 # t4 # t4
-
2. 思路
-
概述
- 思路
-
思路
-
step1
# t1 # t2 # t3 # t4
-
step2
- 结果
-
3. 执行
- 概述
- 执行
1. step1
-
初始状态
-
结果
# t1
-
-
复制
-
操作
- 定位到 t1 行
- 标准模式
- 输入
yy3p
-
结果
# t1 # t1 # t1 # t1
-
-
序列
-
操作
- 定位到 第二行 的 1
- 标准模式
- 输入
ctrl + v
切换到 v 模式 - 选到最下面的 1
- 输入
g
- 输入
ctrl + a
-
结果
# t1 # t2 # t3 # t4
-
2. step2
-
复制
-
操作
- 切换到 命令模式
- 输入命令
:% s/.*/\0\r\0\r\0\r\0\r
/g
-
结果
# t1 # t1 # t1 # t1 # t2 # t2 # t2 # t2 # t3 # t3 # t3 # t3 # t4 # t4 # t4 # t4
-
-
后续空行
-
操作
- 命令
g/^$/d
- 命令
-
结果
# t1 # t1 # t1 # t1 # t2 # t2 # t2 # t2 # t3 # t3 # t3 # t3 # t4 # t4 # t4 # t4
-
4. 后续
-
复杂内容
- 变化的部分, 不是连续数字
- 重复的次数, 次数不一样
-
思路
- 写简单 shell 脚本
- 用 模板 生成
- 这些都超出 vim 范畴, 就不在这里谈论了
-
宏
- 其实也可以用 宏 的方式解决
- 但是好像也没有这么方便, 所以放弃了
- 可能是我做宏的能力有限吧
- 如果有 园友 可以提供其他优秀思路, 可以留言一起交流
- 但是好像也没有这么方便, 所以放弃了
- 其实也可以用 宏 的方式解决
尽量尝试解释清楚; 自己校对能力有限, 如果有错误欢迎指出