Vim如何把所有偶数行合并到奇数行上

Vim、Emacs配置和使用
头像
opp
帖子: 622
注册时间: 2008-03-30 11:42
联系:

Vim如何把所有偶数行合并到奇数行上

#1

帖子 opp » 2010-02-03 10:43

下了英语单词txt文档,默认是奇数行是一个单词,它的下一行是中文,可我放在手机里太长了,没有必要把解释放在下一行,放下一行不仅使文档行数增加,而且看着不爽,甚至还会有可能把第2行的中文看成是第3行的解释,总之就是不爽。
1,3,5,7……是单词,2,4,6,8……对应的是他们的解释,我知道按J可以合并,不过一个一个地这样非常累人,我想知道在Vim里怎么快速实现,我知道sed也能做到,不过不知道怎么写,要用到patternspace吧,不太熟。
望各位指点一下,谢谢您的帮助。
poet
帖子: 2841
注册时间: 2006-09-11 22:47

Re: Vim如何把所有偶数行合并到奇数行上

#2

帖子 poet » 2010-02-03 11:00

qqJjq

定义一个宏

然后999@q 就可以一次修改999行了。

多重复几次就全部改完了。
头像
xiooli
帖子: 6956
注册时间: 2007-11-19 21:51
来自: 成都
联系:

Re: Vim如何把所有偶数行合并到奇数行上

#3

帖子 xiooli » 2010-02-03 11:01

代码: 全选

awk '{if(NR%2 != 0){en=$0} else {print en,$0}}' file > new_file
头像
opp
帖子: 622
注册时间: 2008-03-30 11:42
联系:

Re: Vim如何把所有偶数行合并到奇数行上

#4

帖子 opp » 2010-02-03 12:13

Re:2#
定义宏?Vim里怎么定义?

Re:3#
awk不太熟,试一下,就是不知道Win下的GBK在Linux下这样会不会换行符出现异常。
风间星魂
帖子: 490
注册时间: 2009-06-20 23:53

Re: Vim如何把所有偶数行合并到奇数行上

#5

帖子 风间星魂 » 2010-02-03 12:46

默认按q键开始录制,先按q然后在选个键存宏,然后操作完后再按q结束录制。按@然后在按你先前存的键执行宏,前面加数字自然就是执行次数。

vim可以识别win mac unix三种格式,你可以自行设置优先级。我建议无论任何平台文档都用utf-8/unix模式。 :em06
上次由 风间星魂 在 2010-02-03 20:50,总共编辑 1 次。
头像
adagio
论坛版主
帖子: 22110
注册时间: 2008-02-17 23:47
来自: 美丽富饶的那啥星球

Re: Vim如何把所有偶数行合并到奇数行上

#6

帖子 adagio » 2010-02-03 13:13

normal模式下按qa就开始宏记录,然后你可以开始操作,比如按J合并,换行等等,可以了之后按q结束
之后你可移到下一行,开始回放这个宏a
如2楼所说,你可以让他重复999次即可,比如999@a,搞定
明天就换大三八!
——8核CPU、8G内存、8T硬盘……
8卡交火,80寸大屏放8个……
IPv8的光纤要8条……

---------------------------------------------------------------------------------
[图片版]新手当自强(续)FAQ
[新手进阶]挂载、fstab、调整linux分区
[图片版]E17桌面环境配置手把手
风间星魂
帖子: 490
注册时间: 2009-06-20 23:53

Re: Vim如何把所有偶数行合并到奇数行上

#7

帖子 风间星魂 » 2010-02-03 13:18

adagio 写了:normal模式下按qa就开始宏记录,然后你可以开始操作,比如按J合并,换行等等,可以了之后按q结束
之后你可移到下一行,开始回放这个宏a
如2楼所说,你可以让他重复999次即可,比如999@a,搞定
楼上1w多帖 :em20
头像
adagio
论坛版主
帖子: 22110
注册时间: 2008-02-17 23:47
来自: 美丽富饶的那啥星球

Re: Vim如何把所有偶数行合并到奇数行上

#8

帖子 adagio » 2010-02-03 13:22

EE出来啊!让人家开开眼 :em05
明天就换大三八!
——8核CPU、8G内存、8T硬盘……
8卡交火,80寸大屏放8个……
IPv8的光纤要8条……

---------------------------------------------------------------------------------
[图片版]新手当自强(续)FAQ
[新手进阶]挂载、fstab、调整linux分区
[图片版]E17桌面环境配置手把手
风间星魂
帖子: 490
注册时间: 2009-06-20 23:53

Re: Vim如何把所有偶数行合并到奇数行上

#9

帖子 风间星魂 » 2010-02-03 13:25

还是看ee大神 :em06
上次由 风间星魂 在 2010-02-03 13:35,总共编辑 1 次。
poet
帖子: 2841
注册时间: 2006-09-11 22:47

Re: Vim如何把所有偶数行合并到奇数行上

#10

帖子 poet » 2010-02-03 13:29

opp 写了:Re:2#
定义宏?Vim里怎么定义?
我不是在前面已经把定义的命令都给出来了么!
头像
adagio
论坛版主
帖子: 22110
注册时间: 2008-02-17 23:47
来自: 美丽富饶的那啥星球

Re: Vim如何把所有偶数行合并到奇数行上

#11

帖子 adagio » 2010-02-03 13:36

湿人大哥,你也不给个说明,人家看不懂喔 :em04
明天就换大三八!
——8核CPU、8G内存、8T硬盘……
8卡交火,80寸大屏放8个……
IPv8的光纤要8条……

---------------------------------------------------------------------------------
[图片版]新手当自强(续)FAQ
[新手进阶]挂载、fstab、调整linux分区
[图片版]E17桌面环境配置手把手
风间星魂
帖子: 490
注册时间: 2009-06-20 23:53

Re: Vim如何把所有偶数行合并到奇数行上

#12

帖子 风间星魂 » 2010-02-03 13:53

既然ee不来,我先来一个最简单的,在vim中使用如下命令,保证管用。 :em06

代码: 全选

:%s/\(\w.*\)\n/\1\t
上次由 风间星魂 在 2010-02-03 14:13,总共编辑 3 次。
头像
adagio
论坛版主
帖子: 22110
注册时间: 2008-02-17 23:47
来自: 美丽富饶的那啥星球

Re: Vim如何把所有偶数行合并到奇数行上

#13

帖子 adagio » 2010-02-03 13:57

ls这个嘛意思?解释一下好不 :em06
明天就换大三八!
——8核CPU、8G内存、8T硬盘……
8卡交火,80寸大屏放8个……
IPv8的光纤要8条……

---------------------------------------------------------------------------------
[图片版]新手当自强(续)FAQ
[新手进阶]挂载、fstab、调整linux分区
[图片版]E17桌面环境配置手把手
风间星魂
帖子: 490
注册时间: 2009-06-20 23:53

Re: Vim如何把所有偶数行合并到奇数行上

#14

帖子 风间星魂 » 2010-02-03 13:59

adagio 写了:ls这个嘛意思?解释一下好不 :em06
简单地说把所有英文后面的换行符换成tab符 :em06
头像
adagio
论坛版主
帖子: 22110
注册时间: 2008-02-17 23:47
来自: 美丽富饶的那啥星球

Re: Vim如何把所有偶数行合并到奇数行上

#15

帖子 adagio » 2010-02-03 14:03

\1就是tab符号?学习了 :em11
明天就换大三八!
——8核CPU、8G内存、8T硬盘……
8卡交火,80寸大屏放8个……
IPv8的光纤要8条……

---------------------------------------------------------------------------------
[图片版]新手当自强(续)FAQ
[新手进阶]挂载、fstab、调整linux分区
[图片版]E17桌面环境配置手把手
回复