Я попытался создать сопоставление, чтобы заключить визуально выбранные абзацы в
теги:
vnoremap <silent> _p <Esc>`>a</p><Esc>`<i<p><Esc>:'<,'>s/\n\{2,}/<\/p>\r\r<p>/g<CR>
К сожалению, это отображение всегда добавляет нежелательный </p>\r\r<p>
в конце выделения (то есть после </p>
добавленного за последним символом в шаге 1).
Выбор не заканчивается двойным переводом строки, поэтому шаблон не должен совпадать. Что я делаю неправильно?
От ответа
Спасибо, Ромен, у меня установлен плагин объемного звучания, но это бесполезно, когда выделенный блок содержит несколько абзацев. Вышеприведенное сопоставление используется для этого случая, а не для того, чтобы заключить в него один абзац.
Мое отображение сначала добавляет </p> в конец, затем <p> в начало выделения, после чего оно должно заменять каждое вхождение двух или более разрывов строк соответствующей комбинацией закрывающего и открывающего тега.
Я до сих пор не понимаю, почему шаблон замены применяется к концу выделения, которое никогда не состоит из двойного переноса строки.