По сути, все, что вам нужно сделать, это вставить " +\n"
после
каждый период, за которым не следует цитата (для защиты
последний). Это легко сделать в одной команде,
учитывая, что курсор находится на этой строке:
:s/\v\.\s*"@!\zs/" +\r"/g
Обратите внимание, что эта команда также сохранит ваши случайные
пробелы после периода. В вашем вопросе вы
полностью убрал их. Неясно, является ли это
желательно или нет, но, похоже, изменить окончательный результат
строка.
Одна проблема в том, что эта команда не заботится о
отступы. Конечно, это может быть легко решено с помощью нескольких
стандартные ручные команды. Однако это также возможно сделать
это в команде :s
с использованием следующей стратегии:
- Получить строку, над которой в данный момент работает, с
getline('.')
- Сопоставить содержимое перед первой цитатой с
matchstr(<line>, '[^"]*')
- Получите длину совпадения, используя
strlen(<match>)
- Повторите пробел для этой длины с
repeat(' ', <length>)
- Вставьте эти пробелы перед последним
"
в более раннем " +\r"
замена
Все в одном (длинное):
:s/\v\.\s*"@!\zs/\="\" +\n".repeat(' ',strlen(matchstr(getline('.'),'[^"]*'))).'"'/g