如何在vim中的每几行之后添加一行

时间:2012-05-02 12:36:55

标签: vim

我想使用vim编辑器在文件中每3行添加一行(大约1000行)。有人可以帮助我吗?

谢谢, ALISHA

4 个答案:

答案 0 :(得分:33)

有一个特定于vim的正则表达式

  :%s/.*\n.*\n.*\n/\0\r/g
  • %s是用于替换整个文件的vim ex命令
  • 。* \ n是一行,包括行尾
  • \ 0是整个匹配的表达式
  • \ r \ n vim的方式来说添加一个新行(不是正如人们期望的那样)

编辑:如果你想要一个新行以外的其他内容,只需将文本放在\ r \ n之前(正确的正则表达式转义,如果它包含一些正则表达式字符)

答案 1 :(得分:15)

您可以使用macro。完整的过程如下:

qq     " start recording to register q (you could use any register from a to z)
o      " insert an empty line below cursor
<Esc>  " switch to normal mode
jjj    " move the cursor 3 lines downward
q      " stop recording

然后只需移至起始行并输入1000@q即可执行1000次宏。

答案 2 :(得分:7)

" insert a blank line every 3 lines

:%s/\v(.*\n){3}/&\r          

: .............. command
% .............. whole file
s .............. replace
/ .............. start pattern that we will replace
\v ............. very magic mode, see :h very-magic
(.*\n) ......... everything including the line break
{3} ............ quantifier 
/ .............. start new pattern to replace
& .............. corresponds to the pattern sought in (.*\n)
\r ............. add line break

来源:http://www.rayninfo.co.uk/vimtips.html

答案 3 :(得分:2)

我会这样做:

:%s/^/\=(line(".")%4==0?"\n":"")/g

如果您的要求更改为“* 每700行添加一个新的空行 * s”,则此功能正常运行,您只需更改“4”

P.S。如果我需要这样做,我不会在vim中这样做。 sed,awk,可以做得更简单。