交替放置两个文本块的行
Place the rows of two blocks of text after each other alternatively
我有以下两段文字
abc
abc
cdz
zer
sdf
bfd
dss
azr
vvf
ezr
我想知道如何交替放置这两个块的行,以便得到如下的最终文本块:-
abc
bfd
abc
dss
cdz
azr
zer
vvf
sdf
ezr
这是受 this 问题启发的方法:
将每个块写入一个单独的临时文件:
vip
:'<,'>w /tmp/a
<motion>
vip
:'<,'>w /tmp/b
把两块剪下来
插入paste
的输出:
:read !paste -d '\n' /tmp/a /tmp/b
使用宏一次移动 1 行:
- 开始录制宏,将光标放在第 1 行的第一个字符上
- 将光标向下移动 x 行直到第二块的第一行(在本例中 x=8)
8j
- 使用
D
而不是 dd
来剪切这条线以保持两个块之间的距离
D
- 将光标向上移动 x 行到第一行
8k
- 粘贴我们刚刚剪切的线
o[esc]p
- 将光标移动到下一个起始位置(下一行的第一个字符)
j^
- 结束录制。
- 在每一行重播这个宏。
我有以下两段文字
abc
abc
cdz
zer
sdf
bfd
dss
azr
vvf
ezr
我想知道如何交替放置这两个块的行,以便得到如下的最终文本块:-
abc
bfd
abc
dss
cdz
azr
zer
vvf
sdf
ezr
这是受 this 问题启发的方法:
将每个块写入一个单独的临时文件:
vip :'<,'>w /tmp/a <motion> vip :'<,'>w /tmp/b
把两块剪下来
插入
paste
的输出::read !paste -d '\n' /tmp/a /tmp/b
使用宏一次移动 1 行:
- 开始录制宏,将光标放在第 1 行的第一个字符上
- 将光标向下移动 x 行直到第二块的第一行(在本例中 x=8)
8j
- 使用
D
而不是dd
来剪切这条线以保持两个块之间的距离D
- 将光标向上移动 x 行到第一行
8k
- 粘贴我们刚刚剪切的线
o[esc]p
- 将光标移动到下一个起始位置(下一行的第一个字符)
j^
- 结束录制。
- 在每一行重播这个宏。