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
记录了 10Jjj
到 a
。现在,要使用存储到 a
的宏,您可以使用 @
符号,后跟存储宏的位置的字母(在本例中为 a
,因为我们键入 qa
). 99
表示重复 99 次,因此,99@a
表示重复存储在宏 a 中的内容 99 次。
合起来qa10Jjjq99@a
的意思是:录制一个宏q
,存入a
。然后,加入10行10J
并向下移动两行jj
,然后停止录制q
。然后重复存储的宏99次99@a
.
我有一个 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
记录了 10Jjj
到 a
。现在,要使用存储到 a
的宏,您可以使用 @
符号,后跟存储宏的位置的字母(在本例中为 a
,因为我们键入 qa
). 99
表示重复 99 次,因此,99@a
表示重复存储在宏 a 中的内容 99 次。
合起来qa10Jjjq99@a
的意思是:录制一个宏q
,存入a
。然后,加入10行10J
并向下移动两行jj
,然后停止录制q
。然后重复存储的宏99次99@a
.