Я создал функцию для поиска произвольного числа пустых строк (с пробелами или без пробелов) и замены их новым (произвольным) числом пустых строк.
fun! s:AddRemoveNumbEmptyLines()
if !exists("emptylinesbefore")
let emptylinesbefore = "How many empty lines do you search? \n (p.e. 2,3 4, ,3)"
endif
let b = inputdialog(emptylinesbefore)
if !exists("emptylinesafter")
let emptylinesafter = "How many empty lines must it be?"
endif
let c = inputdialog(emptylinesafter)
let m = repeat('\r', c)
exe 's/\(^\s*$\n\)\{'.b.'}/'.m.'/gc'
endfun
Пусть, скажем, b = 2, (2 и более) И m = 3
Если vim находит 4 пустые строки, он подменяет 3 пустые строки.
(это нормально).
Но когда я отклоняю запрос на замену (я использую"c" (подтвердить) флаг) он находит в том же месте 3 пустых строки и снова спрашивает, нужно ли его заменить 3 пустыми строками.Когда я снова отказываюсь, он находит в том же месте 2 пустые строки и снова спрашивает, хочу ли я выполнить замену.
Как можно избежать этих нескольких запросов на замену (в одном и том же месте)?
Надеюсь, я все прояснил :)