如何在 Vim 中连接每隔一行?

如何在 Vim 中连接每隔一行?

我想连接很多行(约 1000 行),但只连接奇数行和下一行。手动操作我可以做到

Jj

500 次就完成了。但是,我如何在一个命令中执行这两个语句 500 次?输入

500Jj

将加入接下来的 500 条线路,然后向下移动一行。

例子:

我有:

a
b
c
d
e
f
g
h

我想:

a b
c d
e f
g h

编辑:我尝试过映射:

:map X Jj
500X

但显然我应该再读一遍映射文档。没用。

答案1

我会这样做:

  1. 开始录制宏‘q’:qqJjq

  2. 重放宏‘q’500次:500@q

(实际上它不是一个名为“q”的宏,而是一个名为“q”的命名寄存器。除了像 1. 那样以交互方式填充该寄存器,您还可以先:let @q = "Jj"执行 2.)

答案2

在文件的每一行上执行此操作:

:%normal J

或者更短:

:%norm J

要仅对文件的一部分执行此操作,请选择行V或以其他方式获取范围:

:'<,'>global/^/normal J

或者更短:

:'<,'>g/^/norm J

答案3

那这个呢:

:g/$/j  

或者

:g/$/j!  

并每三行分组

:g/$/j3 

答案4

我不是 Vim 的用户,但查看在线文档后发现

500(Jj) 

可能会有效,因为它将括号内的内容解析为一个单元。

相关内容