给出一个具有偶数行的文件, 从下半部分到上半部分交织线条 半?例如,从此:
a
b
c
1
2
3
对此:
a
1
b
2
c
3
一个可能的解决方案是将这些一半写成
分隔的文件,然后使用paste
实用程序。
:1,3w a | 4,6w b
:%!paste -d \\n a b
但是,我想在其中找到一种简短的方法 Vim-使用本机命令。
答案 0 :(得分:6)
:g
命令通常用于迭代行和
执行一些命令。在这种情况下,它可以用来
在文件后半部分的行上进行迭代,而
将线从上半年移至适当位置
:m
的相对位置。
考虑到光标在第一行
下半部分,必须在第一行之前
从上半年开始,所以我们可以使用:1 m -1
将其移到那里
(将第1行相对于光标移动到位置-1)。后
现在,第1行是第二行之前的内容
下半场。因此,这是移动光标的问题
向下并重复此过程,方便地由
:g
。简而言之,第一个跳到第二个的第一行
一半加上 5 0 %,然后:
:,$g/^/1m-1
作为将整个块的范围取为 隔行扫描(两半)或默认为整个文件:
command! -range=% Interleave execute 'keeppatterns'
\ (<line2>-<line1>+1)/2+<line1> ',' <line2>
\ 'g/^/<line1> move -1'
:Interleave
注意::Interleave
使用:keeppatterns
来防止
从更改中搜索寄存器和历史记录。 :keeppatterns
需要Vim 7.4.083 +