如何在vim文件结束前执行命令?

Gra*_*min 0 vim

我有一些看起来像:

{
hey1
},
{
you2
},
{
hey3
},
{
you4
}
Run Code Online (Sandbox Code Playgroud)

我想把它改成: {hey1}, {you2}, {hey3}, {you4}.

我知道我可以制作一个宏qa 3Jj q,103@a但我正在寻找一个不需要我的解决方案1)制作一个宏,2)知道行数.所以我尝试了类似的东西:3J . G.但这不起作用.如何在每3行执行3J命令直到文件结尾?

ben*_*her 5

您可以j!3{使用该:global命令开始的每一行上执行(连接三行,从当前的一行开始,没有多余的空格):

:g/^{/j!3
Run Code Online (Sandbox Code Playgroud)

如果你试图在每一行上做同样的事情(忽略第一个字符),你会得到完全相同的结果(在你的示例文本上),因为我:g知道不要尝试在不再存在的行上执行命令:

:g/^/j!3
Run Code Online (Sandbox Code Playgroud)