![如何在 Vim 中连接每隔一行?](https://linux22.com/image/1245700/%E5%A6%82%E4%BD%95%E5%9C%A8%20Vim%20%E4%B8%AD%E8%BF%9E%E6%8E%A5%E6%AF%8F%E9%9A%94%E4%B8%80%E8%A1%8C%EF%BC%9F.png)
我想连接很多行(约 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
我会这样做:
开始录制宏‘q’:
qqJjq
重放宏‘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)
可能会有效,因为它将括号内的内容解析为一个单元。