在vim缓冲区中的每一行上运行vim命令
我想对当前vim缓冲区中的每一行执行在vim缓冲区中的每一行上运行vim命令,vim,Vim,我想对当前vim缓冲区中的每一行执行JJ。因为我有非常大的文件,所以不可能在每一行上手动运行。我怎么能告诉维姆帮我做这件事? 基本上,我有一个文件,其中的数据在一列中。我想把它转换成三列 a b c 致: 使用宏和 将JJ命令重新编码到q uu 定义q宏。全部撤销 :%norm! @q 将q应用于整个文档 附言:我的英语不好 :g/^/join 连接整个缓冲区中的连续行(1+2、3+4等…)。您还可以向:global命令提供[range],该命令仅用于智能线路处理;^正则表达式模式匹配任
JJ
。因为我有非常大的文件,所以不可能在每一行上手动运行。我怎么能告诉维姆帮我做这件事?
基本上,我有一个文件,其中的数据在一列中。我想把它转换成三列
a
b
c
致:
使用宏和
将JJ
命令重新编码到q
uu
定义q
宏。全部撤销
:%norm! @q
将q
应用于整个文档
附言:我的英语不好
:g/^/join
连接整个缓冲区中的连续行(1+2、3+4等…)。您还可以向:global
命令提供[range]
,该命令仅用于智能线路处理;^
正则表达式模式匹配任何行
要连接三条连续线,请使用
:g/^/.,.+2join
或
(如果行的总数不能被3整除,则前者可能会给出一个错误;后者可以避免该错误。)和另一个:
:%norm JJ
请参见
:help:normal
可能与Please重复,学习使用标记法以防止其他人将时间浪费在格式错误的问题上。@BimbaLaszlo问题的预期输出不是一行。@Kent是的,我现在可以看到,但应将问题中的示例改写为a\n b\n c\n d
->ab\n cd
@BimbaLaszlo,这并不完全正确。他做的xargs-n3比我的简单。我猜我是被问题的标题骗了想:global
。
:g/^/.,.+2join
:g/^/join|join
:%norm JJ