在vim缓冲区的每一行上运行vim命令

时间:2014-05-23 05:52:13

标签: vim

我想在当前vim缓冲区的每一行上JJ。由于我的文件非常庞大,因此无法在每一行上手动运行。我该如何告诉vim为我这样做? 基本上我有一个文件,其中包含单列数据。我想将其转换为三列

a
b
c

为:

a b c

4 个答案:

答案 0 :(得分:3)

使用微距和Normal mode command

qqJJq

JJ命令重新编码为q

uu

定义q宏。撤消全部。

:%norm! @q

q应用于整个文档。

PS:我不擅长英语

答案 1 :(得分:3)

还有一个:

:%norm JJ

请参阅:help :normal

答案 2 :(得分:1)

:g/^/join

在整个缓冲区中连接连续行(1 + 2,3 + 4等等)。您还可以向[range]命令提供:global,此命令仅用于智能线路处理; ^正则表达式模式匹配任意行

要加入三个连续行,请使用

:g/^/.,.+2join

:g/^/join|join

(如果总行数不能被3整除,前者可能会出错;后者可以避免这种情况。)

答案 3 :(得分:0)

据我所知,JJ不是一件事。 J 加入行。如果要对整个文件执行此操作,可以使用可视模式,选择整个文件,然后使用 J

ggVGJ