免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 7675 | 回复: 15
打印 上一主题 下一主题

vim如何实现多行追加 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-05-28 09:02 |只看该作者 |倒序浏览
各位好,工作中遇到一个问题,需要VIM实现,例如在VIM中有如下行:
a
b
c
d
e
f
需要把d e f 三行追加到 a b c后面,结果是:
a d
b e
c  f
请问有什么办法实现吗,谢谢。

论坛徽章:
0
2 [报告]
发表于 2010-05-28 09:14 |只看该作者
跳转到a这行, y3y,复制三行

跳转到d这样,ctrl+v,进入列模式,选择d e f三行, I, 插入一个空格,esc,然后p, 复制a b c 三行。

论坛徽章:
5
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:50:282015年亚洲杯之朝鲜
日期:2015-03-13 22:47:33IT运维版块每日发帖之星
日期:2016-01-09 06:20:00IT运维版块每周发帖之星
日期:2016-03-07 16:27:44
3 [报告]
发表于 2010-05-28 09:19 |只看该作者
块操作

论坛徽章:
0
4 [报告]
发表于 2010-05-28 09:21 |只看该作者
a
b
c 后面要有足够多的空格,ctrl+v可视模式复制, 复制的时候是复制了块,而不是行。

论坛徽章:
0
5 [报告]
发表于 2010-05-28 09:31 |只看该作者
awk 'NR%3==1{var1=var1" "$0}NR%3==2{var2=var2" "$0}NR%3==0{var3=var3" "$0}END{printf var1"\n"var2"\n"var3}' test105.txt
写了一个非常难看的~还有别的好的方法吗?

论坛徽章:
0
6 [报告]
发表于 2010-05-28 09:49 |只看该作者
谢谢,按您的方法在执行到键入I时,直接进入了编辑模式,之后输入空格只能编辑选择块中的第一行,我用的是win版本的vim,后来在linux下面测试结果一样,看来不是平台的问题,请多多指教。

问题总结:不能执行 I, 插入一个空格

论坛徽章:
0
7 [报告]
发表于 2010-05-28 09:51 |只看该作者
本帖最后由 ywlscpl 于 2010-05-28 10:00 编辑

回复 5# iori809


    是这个意图?
  1. [root@Mylinux tmp]# cat file
  2. a
  3. 1
  4. d
  5. q
  6. b
  7. e
  8. m
  9. [root@Mylinux tmp]# awk '{a[NR%3]=NR%3 in a?a[NR%3]" "$0:$0}END{print a[1]"\n"a[2]"\n"a[0]}' file
  10. a q m
  11. 1 b
  12. d e
复制代码

论坛徽章:
0
8 [报告]
发表于 2010-05-28 10:09 |只看该作者
回复 7# ywlscpl


    一直被模仿,从未被超越~

没错~

论坛徽章:
0
9 [报告]
发表于 2010-05-28 10:18 |只看该作者
回复 8# iori809


    这个更通用点,如果需求是更多列的话,不用打很多数组
  1. [root@Mylinux tmp]# cat file
  2. a
  3. 1
  4. d
  5. q
  6. b
  7. e
  8. m
  9. d
  10. q
  11. a
  12. 1
  13. 2
  14. 4
  15. [root@Mylinux tmp]# awk '{n=(NR-1)%6;a[n]=n in a?a[n]" "$0:$0}END{for (i=1;i<=asorti(a,b);i++) print a[b[i]]}' file
  16. a m 4
  17. 1 d
  18. d q
  19. q a
  20. b 1
  21. e 2
复制代码

论坛徽章:
0
10 [报告]
发表于 2010-05-28 10:32 |只看该作者
本帖最后由 zrp999 于 2010-05-28 10:38 编辑

我把代码帖上来吧:
  未处理的代码:
主键
备注
状态
添加者
修改者
添加时间
修改时间
姓名-姓
姓名-名
性别代码
出生日期
参加工作日期
编制
进修情况
姓名类别编码
姓名标识对象
常住地址户籍标志
行政区划代码
电子邮件地址
国籍代码
民族代码
婚姻状况类别代码
职称代码
职务代码
文化程度代码
政府人员ID

PID       
REMARKS       
STATUS       
INPUTER       
UPDATER       
INPUTDATETIME
UPDATEDATETIME
NAMELAST       
NAMEFIRST       
SEXCODE       
DATEOFBIRTH
WORKDATE
AUTHORIZED       
REFRESHER       
NAMECLASSCODE       
NAMEID       
PATYPE       
AREACODE       
EMAIL       
NATIONALITYCODE       
NATIONCODE       
MARRIAGECODE       
JOBLVCODE       
FUNCTIONARYCODE       
KULTURCODE       
GOVPERSONID

在VIM格式化后的结果:

  1. 主键            PID               
  2. 备注            REMARKS               
  3. 状态            STATUS               
  4. 添加者            INPUTER                       
  5. 修改者            UPDATER                       
  6. 添加时间            INPUTDATETIME               
  7. 修改时间            UPDATEDATETIME               
  8. 姓名-姓            NAMELAST                               
  9. 姓名-名            NAMEFIRST                               
  10. 性别代码            SEXCODE                               
  11. 出生日期            DATEOFBIRTH               
  12. 参加工作日期            WORKDATE                       
  13. 编制            AUTHORIZED                               
  14. 进修情况            REFRESHER                               
  15. 姓名类别编码            NAMECLASSCODE               
  16. 姓名标识对象            NAMEID                                       
  17. 常住地址户籍标志 PATYPE                                       
  18. 行政区划代码            AREACODE                       
  19. 电子邮件地址            EMAIL                               
  20. 国籍代码            NATIONALITYCODE               
  21. 民族代码            NATIONCODE                       
  22. 婚姻状况类别代码 MARRIAGECODE               
  23. 职称代码            JOBLVCODE                               
  24. 职务代码            FUNCTIONARYCODE               
  25. 文化程度代码            KULTURCODE                       
  26. 政府人员ID              GOVPERSONID
复制代码
因要做大量这种处理 ,如果能通过VIM来快速实现,可以减少很多重复工作量,谢谢。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP