Подтвердить что ты не робот

Как добавить строку после каждых нескольких строк в vim

Я хотел добавить строку после каждых 3 строк в файле (около 1000 строк) с помощью редактора vim. Может кто-нибудь помочь мне?

Спасибо, Алиша

4b9b3361

Ответ 1

существует определенное для vim регулярное выражение, чтобы сделать это

  :%s/.*\n.*\n.*\n/\0\r/g
  • % s - команда vim ex для замены во всем файле
  • . *\n - это строка, включающая конец строки
  • \0 - полное согласованное выражение
  • \r vim способ добавить новую строку (не\n, как можно было бы ожидать)

Изменить: если вы хотите что-то еще, кроме новой строки, просто поместите текст перед \r (правильно выведенное регулярное выражение, если оно содержит некоторые символы регулярных выражений)

Ответ 2

Вы можете использовать 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

Затем просто перейдите в стартовую строку и введите [email protected], чтобы выполнить ваш макрос 1000 раз.

Ответ 3

" 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

Ответ 4

Я бы сделал это:

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

это работает, если ваше требование изменилось на "* добавить новую пустую строку каждые 700 строк * s":) вы просто измените "4"

P.S. если мне это нужно, я не сделаю этого в vim. sed, awk, может сделать это намного проще.