vim 将换行符更改为 space 但不是每第 n 行

vim change newline into space but not every nth-line

我有一个 file.txt 的 1000 行,每前 10 行都需要在一行上。 第 11 行另起一行,并添加第 12-20 行。

如何在 Vim 中执行此操作!

我不是 100% 确定我明白你的意思,但我会给你一些提示,也许它们会有所帮助。

要将行连接在一起,您可以使用 J(大写 J 或 Shift-J)。您可以在此之前加上一个数字,例如 10,并将 10 行连接在一起。例如,键入 10J 将得到:

现在,您真正需要的是一个宏。这听起来很花哨,但它只是一种方式或记录一组命令。因此,例如,您可以使用 10J 并将其录制到宏中。重复该宏 10 次,然后重复 100 行。

我认为您的问题的解决方案应该是这样的:

qa10Jjjq99@a

这样做(解释见下文):

解释:

q 开始录制宏。您之后键入的所有内容,直到您再次键入 q 为止,都会被记录下来。下一个字符a记录了对字符a的宏。因此,qa10Jjjq99@a 中的 qa 记录了 10Jjja。现在,要使用存储到 a 的宏,您可以使用 @ 符号,后跟存储宏的位置的字母(在本例中为 a,因为我们键入 qa). 99 表示重复 99 次,因此,99@a 表示重复存储在宏 a 中的内容 99 次。

合起来qa10Jjjq99@a的意思是:录制一个宏q,存入a。然后,加入10行10J并向下移动两行jj,然后停止录制q。然后重复存储的宏99次99@a.